当前位置: 首页 > news >正文

公司网站后台打不开/seo优化快速排名技术

公司网站后台打不开,seo优化快速排名技术,邯郸专业做网站报价,彭山住房和城乡建设局网站//第二种和第一种类似 加密方式由EBC 改成 CBC 增加了向量 每太明白可能就是增加复杂度吧//这个是写借口的时候 我用java 别人用的是别的语言 AES加密对应不上 别人提供的 如果没有汉字就对上了 ,有了汉字加密后的16进制也是不一样的//想到的办法是用 URLEncorder.encode("…

//第二种和第一种类似 加密方式由EBC 改成 CBC 增加了向量 每太明白可能就是增加复杂度吧

//这个是写借口的时候 我用java 别人用的是别的语言 AES加密对应不上 别人提供的 如果没有汉字就对上了 ,有了汉字加密后的16进制也是不一样的

//想到的办法是用 URLEncorder.encode("汉字") 进行转码 或者这里面提供的把汉字转换为二进制

import java.io.UnsupportedEncodingException;

import java.security.InvalidAlgorithmParameterException;

import java.security.InvalidKeyException;

import java.security.NoSuchAlgorithmException;

import java.security.SecureRandom;

import javax.crypto.BadPaddingException;

import javax.crypto.Cipher;

import javax.crypto.IllegalBlockSizeException;

import javax.crypto.KeyGenerator;

import javax.crypto.NoSuchPaddingException;

import javax.crypto.SecretKey;

import javax.crypto.spec.IvParameterSpec;

import javax.crypto.spec.SecretKeySpec;

public class AESUtil2 {

/*

* 算法/模式/填充 16字节加密后数据长度 不满16字节加密后长度

* AES/CBC/NoPadding 16 不支持

* AES/CBC/PKCS5Padding 32 16

* AES/CBC/ISO10126Padding 32 16

* AES/CFB/NoPadding 16 原始数据长度

* AES/CFB/PKCS5Padding 32 16

* AES/CFB/ISO10126Padding 32 16

* AES/ECB/NoPadding 16 不支持

* AES/ECB/PKCS5Padding 32 16

* AES/ECB/ISO10126Padding 32 16

* AES/OFB/NoPadding 16 原始数据长度

* AES/OFB/PKCS5Padding 32 16

* AES/OFB/ISO10126Padding 32 16

* AES/PCBC/NoPadding 16 不支持

* AES/PCBC/PKCS5Padding 32 16

* AES/PCBC/ISO10126Padding 32 16

*

* 注:

* 1、JCE中AES支持五中模式:CBC,CFB,ECB,OFB,PCBC;支持三种填充:NoPadding,PKCS5Padding,ISO10126Padding。 不带模式和填充来获取AES算法的时候,其默认使用ECB/PKCS5Padding。

* 2、Java支持的密钥长度:keysize must be equal to 128, 192 or 256

* 3、Java默认限制使用大于128的密钥加密(解密不受限制),报错信息:java.security.InvalidKeyException: Illegal key size or default parameters

* 4、下载并安装JCE Policy文件即可突破128密钥长度的限制:覆盖jre\lib\security目录下local_policy.jar、US_export_policy.jar文件即可

* 5、除ECB外,需提供初始向量(IV),如:Cipher.init(opmode, key, new IvParameterSpec(iv)), 且IV length: must be 16 bytes long

*/

private static String ALGORITHM = "AES";

private static int keySize = 128;

private static final String TRANSFORMATION = "AES/CBC/PKCS5Padding";

public static SecretKeySpec bulidKey(String password) throws NoSuchAlgorithmException {

KeyGenerator kgen = KeyGenerator.getInstance(ALGORITHM);

SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");

secureRandom.setSeed(password.getBytes());

kgen.init(keySize, secureRandom);

SecretKey secretKey = kgen.generateKey();

byte[] enCodeFormat = secretKey.getEncoded();

SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");

return key;

}

/**

* 加密

*

* @param content

* 需要加密的内容

* @param password

* 加密密码

* @return

*/

public static byte[] encrypt(String content, String password) {

try {

SecretKeySpec key = bulidKey(password);

String iv = "jssjbyfkzzxsyjcs";//初始化向量参数,AES 为16bytes. DES 为8bytes.

IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes()); //增加了向量 这就是上面一个不用的地方

Cipher cipher = Cipher.getInstance(TRANSFORMATION);// 创建密码器

cipher.init(Cipher.ENCRYPT_MODE, key, ivSpec);// 初始化

byte[] byteContent = content.getBytes("gbk");

byte[] result = cipher.doFinal(byteContent);

return result; // 加密

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (NoSuchPaddingException e) {

e.printStackTrace();

} catch (InvalidKeyException e) {

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

e.printStackTrace();

} catch (BadPaddingException e) {

e.printStackTrace();

} catch (InvalidAlgorithmParameterException e) {

e.printStackTrace();

}

return null;

}

/**

* 加密

*

* @param content

* 需要加密的内容

* @param password

* 加密密码

* @return

*/

public static String encrypt2Str(String content, String password) {

return parseByte2HexStr(encrypt(content,password)); // 加密

}

/**

* 解密

*

* @param content

* 待解密内容

* @param password

* 解密密钥

* @return

*/

public static byte[] decrypt(byte[] content, String password) {

try {

SecretKeySpec key = bulidKey(password);

String iv = "jssjbyfkzzxsyjcs";//初始化向量参数,AES 为16bytes. DES 为8bytes.

IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());

Cipher cipher = Cipher.getInstance(TRANSFORMATION);// 创建密码器

cipher.init(Cipher.DECRYPT_MODE, key, ivSpec);// 初始化

byte[] result = cipher.doFinal(content);

return result; // 解密

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (NoSuchPaddingException e) {

e.printStackTrace();

} catch (InvalidKeyException e) {

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

e.printStackTrace();

} catch (BadPaddingException e) {

e.printStackTrace();

} catch (InvalidAlgorithmParameterException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

/**

* 解密

*

* @param content

* 待解密内容

* @param password

* 解密密钥

* @return

*/

public static String decryptStr(String content, String password) {

byte[] decryptFrom = parseHexStr2Byte(content);

byte[] decryptResult = decrypt(decryptFrom, password);

String result = "--";

try {

result = new String(decryptResult,"gbk");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return result;

}

/**

* 将二进制转换成16进制

*

* @param buf

* @return

*/

public static String parseByte2HexStr(byte buf[]) {

StringBuffer sb = new StringBuffer();

for (int i = 0; i < buf.length; i++) {

String hex = Integer.toHexString(buf[i] & 0xFF);

if (hex.length() == 1) {

hex = '0' + hex;

}

sb.append(hex.toUpperCase());

}

return sb.toString();

}

/**

* 将16进制转换为二进制

*

* @param hexStr

* @return

*/

public static byte[] parseHexStr2Byte(String hexStr) {

if (hexStr.length() < 1)

return null;

byte[] result = new byte[hexStr.length() / 2];

for (int i = 0; i < hexStr.length() / 2; i++) {

int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);

int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2),

16);

result[i] = (byte) (high * 16 + low);

}

return result;

}

public static void main(String[] args) {

String content = "山东省济南市槐荫区中大办事处裕华里";

String password = "bc29c2f94e0e0355c346892a45bc2b42";

// 加密971436EC53EED78C0A942FCA7900E1E7F13527CB29268B9B52DA3A6C7F804C1825AF87A0B8F550DE09055D42BED07EB7:长度:96

System.out.println("加密前:" + content);

byte[] encryptResult = encrypt(content, password);

String encryptResultStr = parseByte2HexStr(encryptResult);

System.out.println("加密后:" + encryptResultStr+":长度:"+encryptResultStr.length());

// 解密

String decryptResult = decryptStr(encryptResultStr, password);

System.out.println("解密后:" + decryptResult);

}

}

//第三种 就是key的生成不同了 不是用 SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); 她生成的

importjava.security.InvalidKeyException;importjava.security.NoSuchAlgorithmException;importjavax.crypto.BadPaddingException;importjavax.crypto.Cipher;importjavax.crypto.IllegalBlockSizeException;importjavax.crypto.NoSuchPaddingException;importjavax.crypto.spec.SecretKeySpec;public classAESTest {public static voidmain(String args[]){

System.out.println(System.getProperty("file.encoding"));

String content= "123456781234567812345678";

String password= "12345678";

System.out.println("加密前" +content);byte[] encryptResult = encrypt(content, password,16);

System.out.println("加密后的16进制" +parseByte2HexStr(encryptResult));byte[] decryptResult = decrypt(encryptResult,password,16);

System.out.println("解密后" + newString(decryptResult));

}//加密

public static byte[] encrypt(String content, String password, intkeySize) {try{

SecretKeySpec key= new SecretKeySpec(ZeroPadding(password.getBytes(), keySize), "AES");

Cipher cipher= Cipher.getInstance("AES/ECB/PKCS5Padding");byte[] byteContent =content.getBytes();

cipher.init(Cipher.ENCRYPT_MODE, key);byte[] result =cipher.doFinal(byteContent);returnresult;

}catch(NoSuchAlgorithmException e) {

e.printStackTrace();

}catch(NoSuchPaddingException e) {

e.printStackTrace();

}catch(InvalidKeyException e) {

e.printStackTrace();

}catch(IllegalBlockSizeException e) {

e.printStackTrace();

}catch(BadPaddingException e) {

e.printStackTrace();

}return null;

}//解密

public static byte[] decrypt(byte[] content, String password, intkeySize) {try{

SecretKeySpec key= new SecretKeySpec(ZeroPadding(password.getBytes(), keySize), "AES");

Cipher cipher= Cipher.getInstance("AES/ECB/PKCS5Padding");

cipher.init(Cipher.DECRYPT_MODE, key);byte[] result =cipher.doFinal(content);returnresult;

}catch(NoSuchAlgorithmException e) {

e.printStackTrace();

}catch(NoSuchPaddingException e) {

e.printStackTrace();

}catch(InvalidKeyException e) {

e.printStackTrace();

}catch(IllegalBlockSizeException e) {

e.printStackTrace();

}catch(BadPaddingException e) {

e.printStackTrace();

}return null;

}//16进制转化为二进制

public static String parseByte2HexStr(bytebuf[]) {

StringBuffer sb= newStringBuffer();for (int i = 0; i < buf.length; i++) {

String hex= Integer.toHexString(buf[i] & 0xFF);if (hex.length() == 1) {

hex= '0' +hex;

}

sb.append(hex.toUpperCase());

}returnsb.toString();

}//二进制转化为16进制

public static byte[] parseHexStr2Byte(String hexStr) {if (hexStr.length() < 1)return null;byte[] result = new byte[hexStr.length()/2];for (int i = 0;i< hexStr.length()/2; i++) {int high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16);int low = Integer.parseInt(hexStr.substring(i*2+1, i*2+2), 16);

result[i]= (byte) (high * 16 +low);

}returnresult;

}//最上方key生成需要的东西 这里是种子一定补全到128位 在下面个例子 password密码就不能随便写 就是因为没有这个

public static byte[] ZeroPadding(byte[] in,Integer blockSize){

Integer copyLen=in.length;if (copyLen >blockSize) {

copyLen=blockSize;

}byte[] out = new byte[blockSize];

System.arraycopy(in,0, out, 0, copyLen);returnout;

}

}

import java.io.UnsupportedEncodingException;

import java.security.InvalidKeyException;

import java.security.NoSuchAlgorithmException;

import java.security.SecureRandom;

import javax.crypto.BadPaddingException;

import javax.crypto.Cipher;

import javax.crypto.IllegalBlockSizeException;

import javax.crypto.KeyGenerator;

import javax.crypto.NoSuchPaddingException;

import javax.crypto.SecretKey;

import javax.crypto.spec.SecretKeySpec;

public class AESTest {

/**

* 加密

*

* @param content

* 需要加密的内容

* @param password

* 加密密码

* @return

*/

public static byte[] encrypt(String content, String password) {

try {

KeyGenerator kgen = KeyGenerator.getInstance("AES");

kgen.init(128, new SecureRandom(password.getBytes()));

SecretKey secretKey = kgen.generateKey();

byte[] enCodeFormat = secretKey.getEncoded();

SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");

Cipher cipher = Cipher.getInstance("AES");// 创建密码器

byte[] byteContent = content.getBytes("utf-8");

cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化

byte[] result = cipher.doFinal(byteContent);

return result; // 加密

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (NoSuchPaddingException e) {

e.printStackTrace();

} catch (InvalidKeyException e) {

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

e.printStackTrace();

} catch (BadPaddingException e) {

e.printStackTrace();

}

return null;

}

/**

* 解密

*

* @param content

* 待解密内容

* @param password

* 解密密钥

* @return

*/

public static byte[] decrypt(byte[] content, String password) {

try {

KeyGenerator kgen = KeyGenerator.getInstance("AES");

kgen.init(128, new SecureRandom(password.getBytes()));

SecretKey secretKey = kgen.generateKey();

byte[] enCodeFormat = secretKey.getEncoded();

SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");

Cipher cipher = Cipher.getInstance("AES");// 创建密码器

cipher.init(Cipher.DECRYPT_MODE, key);// 初始化

byte[] result = cipher.doFinal(content);

return result; // 加密

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (NoSuchPaddingException e) {

e.printStackTrace();

} catch (InvalidKeyException e) {

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

e.printStackTrace();

} catch (BadPaddingException e) {

e.printStackTrace();

}

return null;

}

public static void main(String args[]) {

String content = "te大st";

String password = "12345678";

// 加密

System.out.println("加密前:" + content);

byte[] encryptResult = encrypt(content, password);

// 解密

byte[] decryptResult = decrypt(encryptResult, password);

System.out.println("解密后:" + new String(decryptResult));

}

}

http://www.lbrq.cn/news/1286335.html

相关文章:

  • 有关做粪污处理设备的企业网站/商业网站
  • 莞城做网站/百度关键词推广方案
  • 网站建设是由什么组成的/域名查询138ip
  • 免费网页模板之家/网站排名优化多少钱
  • 国外优秀的html5网站/seo平台优化
  • 海报制作app/seo课程哪个好
  • 建立网站流程图/专业培训心得体会
  • 怎么注册一个小公司/宁波企业seo推广
  • 广东科技网站建设/怎么做外链
  • 高端网站建设系统规划/武汉全网营销推广公司
  • 恩施公司做网站/百度网站推广
  • 代做网站收费标准/佛山全市核酸检测
  • 网站建设介绍文字/谷歌浏览器直接打开
  • 专门做logo的网站/谷歌浏览器怎么下载
  • 网站做常规优化/百度快照优化
  • 免费php开源建站系统/爱站网关键词长尾挖掘工具
  • 做什网站推广真实有效/西安网站快速排名提升
  • 品牌网站建设报价方案/百度产品有哪些
  • 湘潭网站建设/做网站需要什么技术
  • 高级服装定制网站/百度地图推广怎么做的
  • 绍兴网站开发/网址百度刷排名
  • 电子商务网站经营性icp/bt磁力链好用的引擎
  • 网站备案有用/目前好的推广平台
  • 做阿里渠道的销售要有哪些网站/小红书seo是什么意思
  • 做政府门户网站建设/东莞网络排名优化
  • 商商业网站建设/企业网站推广可以选择哪些方法
  • 西安有哪些做网站建设的公司/青岛新闻最新今日头条
  • 网站制作的设备环境/网站服务器查询工具
  • 常州网络公司客户服务/seo全网营销
  • 武汉建设局网站/重庆百度推广优化
  • 【LLM】Kimi-K2模型架构(MuonClip 优化器等)
  • 尝试几道算法题,提升python编程思维
  • 公域流量向私域流量转化策略研究——基于开源AI智能客服、AI智能名片与S2B2C商城小程序的融合应用
  • Linux用户
  • Redis 缓存机制详解:原理、问题与最佳实践
  • 嵌入式硬件篇---zigbee无线串口通信问题解决方法