MD5解密和AES解密 解码

MD5解密和AES解密解码代码分享

policyNo = EscapeTool.decodeBase64(EscapeTool.unescape(policyNo),"UTF-16");

#AES解密 解码

byte[] content = parseHexStr2Byte(reqxml);//parseByte2HexStr

//AES解密

byte[] ps = decrypt(content, passWord);

//base64解码

reqxml = base64Decode(new String(ps,"GBK"));

String reqxmls = base64Encode(reqxml);

/**

* 将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;

}

/**

* 解密

*

* @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()));

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

   random.setSeed(password.getBytes());

   kgen.init(128, random);

   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 (Exception e) {

   e.printStackTrace();

}

   return null;

}

//解码(base64解码)

public static String base64Decode(String str) throws IOException {

   sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();

   byte[] b;

   b = decoder.decodeBuffer(str);

  String key = new String(b, "GBK");

  return key;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值