微信小程序用户信息AES-128-CBC Java 解密

r囧r小猫 2022-05-16 06:57 280阅读 0赞

欢迎转载:攻城狮不是猫 求保留连接

  1. import com.alibaba.fastjson.JSON;
  2. import org.apache.commons.codec.binary.Base64;
  3. import org.bouncycastle.jce.provider.BouncyCastleProvider;
  4. import javax.crypto.BadPaddingException;
  5. import javax.crypto.Cipher;
  6. import javax.crypto.IllegalBlockSizeException;
  7. import javax.crypto.NoSuchPaddingException;
  8. import javax.crypto.spec.IvParameterSpec;
  9. import javax.crypto.spec.SecretKeySpec;
  10. import java.security.*;
  11. import java.util.HashMap;
  12. import java.util.Map;
  13. /**AES 是一种可逆加密算法,对用户的敏感信息加密处理
  14. * 对原始数据进行AES加密后,在进行Base64编码转化;
  15. */
  16. public class AesCBC {
  17. public static boolean initialized = false;
  18. /**
  19. * AES解密
  20. * @param content 密文
  21. * @return
  22. * @throws InvalidAlgorithmParameterException
  23. * @throws NoSuchProviderException
  24. */
  25. public static byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException {
  26. initialize();
  27. try {
  28. Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
  29. Key sKeySpec = new SecretKeySpec(keyByte, "AES");
  30. cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化
  31. byte[] result = cipher.doFinal(content);
  32. return result;
  33. } catch (NoSuchAlgorithmException e) {
  34. e.printStackTrace();
  35. } catch (NoSuchPaddingException e) {
  36. e.printStackTrace();
  37. } catch (InvalidKeyException e) {
  38. e.printStackTrace();
  39. } catch (IllegalBlockSizeException e) {
  40. e.printStackTrace();
  41. } catch (BadPaddingException e) {
  42. e.printStackTrace();
  43. } catch (NoSuchProviderException e) {
  44. // TODO Auto-generated catch block
  45. e.printStackTrace();
  46. } catch (Exception e) {
  47. // TODO Auto-generated catch block
  48. e.printStackTrace();
  49. }
  50. return null;
  51. }
  52. /**
  53. * 微信小程序用户信息解密
  54. * @param encryptedData
  55. * @param sessionKey
  56. * @param iv
  57. * @return
  58. */
  59. public static String decrypt(String encryptedData, String sessionKey, String iv){
  60. try {
  61. byte[] resultByte = decrypt(Base64.decodeBase64(encryptedData), Base64.decodeBase64(sessionKey), Base64.decodeBase64(iv));
  62. if(null != resultByte && resultByte.length > 0){
  63. String info = new String(resultByte, "UTF-8");
  64. return info;
  65. }
  66. } catch (Exception e) {
  67. e.printStackTrace();
  68. }
  69. return null;
  70. }
  71. public static void initialize(){
  72. if (initialized) return;
  73. Security.addProvider(new BouncyCastleProvider());
  74. initialized = true;
  75. }
  76. //生成iv
  77. public static AlgorithmParameters generateIV(byte[] iv) throws Exception{
  78. AlgorithmParameters params = AlgorithmParameters.getInstance("AES");
  79. params.init(new IvParameterSpec(iv));
  80. return params;
  81. }
  82. public static void main(String[] args) {
  83. String encryptedData, sessionKey, iv, appId;
  84. encryptedData = "CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZM"+
  85. "QmRzooG2xrDcvSnxIMXFufNstNGTyaGS"+
  86. "9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+"+
  87. "3hVbJSRgv+4lGOETKUQz6OYStslQ142d"+
  88. "NCuabNPGBzlooOmB231qMM85d2/fV6Ch"+
  89. "evvXvQP8Hkue1poOFtnEtpyxVLW1zAo6"+
  90. "/1Xx1COxFvrc2d7UL/lmHInNlxuacJXw"+
  91. "u0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn"+
  92. "/Hz7saL8xz+W//FRAUid1OksQaQx4CMs"+
  93. "8LOddcQhULW4ucetDf96JcR3g0gfRK4P"+
  94. "C7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB"+
  95. "6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns"+
  96. "/8wR2SiRS7MNACwTyrGvt9ts8p12PKFd"+
  97. "lqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYV"+
  98. "oKlaRv85IfVunYzO0IKXsyl7JCUjCpoG"+
  99. "20f0a04COwfneQAGGwd5oa+T8yO5hzuy"+
  100. "Db/XcxxmK01EpqOyuxINew==";
  101. sessionKey = "tiihtNczf5v6AKRyjwEUhQ==";
  102. iv = "r7BXXKkLb8qrSNn05n0qiA==";
  103. appId = "wx4f4bc4dec97d474b";
  104. String info = decrypt(encryptedData, sessionKey, iv);
  105. System.out.println(info);
  106. Map<String, Object> map = new HashMap<>();
  107. map.put("encryptedData", encryptedData);
  108. map.put("sessionKey", sessionKey);
  109. map.put("iv", iv);
  110. map.put("appId", appId);
  111. Map<String, Object> map1 = new HashMap<>();
  112. map1.put("wxapplet", map);
  113. String wxapplet = JSON.toJSON(map1).toString();
  114. System.out.println(wxapplet);
  115. }
  116. }

发表评论

表情:
评论列表 (有 0 条评论,280人围观)

还没有评论,来说两句吧...

相关阅读