您的位置 首页 java

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

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

import com.alibaba. fastjson .JSON;
import org.apache.commons.codec.binary.Base64;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.*;
import java.util.HashMap;
import java.util.Map;
/**AES 是一种可逆加密算法,对用户的敏感信息加密处理
 * 对原始数据进行AES加密后,在进行Base64编码转化;
 */public class AesCBC {
 public static boolean initialized = false;
 /**
 * AES解密
 * @param content 密文
 * @return
 * @throws InvalidAlgorithmParameterException
 * @throws NoSuchProviderException
 */ public static byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException {
 initialize();
 try {
 Cipher cipher = Cipher. getInstance ("AES/CBC/PKCS7Padding");
 Key sKeySpec = new SecretKeySpec(keyByte, "AES");
 cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化
 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 (NoSuchProviderException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 } catch (Exception e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
 return null;
 }
 /**
 * 微信小程序用户信息解密
 * @param encryptedData
 * @param sessionKey
 * @param iv
 * @return
 */ public static String decrypt(String encryptedData, String sessionKey, String iv){
 try {
 byte[] resultByte = decrypt(Base64.decodeBase64(encryptedData), Base64.decodeBase64(sessionKey), Base64.decodeBase64(iv));
 if(null != resultByte && resultByte.length > 0){
 String info = new String(resultByte, "UTF-8");
 return info;
 }
 } catch (Exception e) {
 e.printStackTrace();
 }
 return null;
 }
 public static void initialize(){
 if (initialized) return;
 Security.addProvider(new BouncyCastleProvider());
 initialized = true;
 }
 //生成iv
 public static AlgorithmParameters generateIV(byte[] iv) throws Exception{
 AlgorithmParameters  params  = AlgorithmParameters.getInstance("AES");
 params.init(new IvParameterSpec(iv));
 return params;
 }
 public static void main(String[] args) {
 String encryptedData, sessionKey, iv, appId;
 encryptedData = "CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZM"+
 "QmRzooG2xrDcvSnxIMXFufNstNGTyaGS"+
 "9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+"+
 "3hVbJSRgv+4lGOETKUQz6OYStslQ142d"+
 "NCuabNPGBzlooOmB231qMM85d2/fV6Ch"+
 "evvXvQP8Hkue1poOFtnEtpyxVLW1zAo6"+
 "/1Xx1COxFvrc2d7UL/lmHInNlxuacJXw"+
 "u0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn"+
 "/Hz7saL8xz+W//FRAUid1OksQaQx4CMs"+
 "8LOddcQhULW4ucetDf96JcR3g0gfRK4P"+
 "C7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB"+
 "6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns"+
 "/8wR2SiRS7MNACwTyrGvt9ts8p12PKFd"+
 "lqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYV"+
 "oKlaRv85IfVunYzO0IKXsyl7JCUjCpoG"+
 "20f0a04COwfneQAGGwd5oa+T8yO5hzuy"+
 "Db/XcxxmK01EpqOyuxINew==";
 sessionKey = "tiihtNczf5v6AKRyjwEUhQ==";
 iv = "r7BXXKkLb8qrSNn05n0qiA==";
 appId = "wx4f4bc4dec97d474b";
 String info = decrypt(encryptedData, sessionKey, iv);
 System.out.println(info);
 Map<String, Object> map = new HashMap<>();
 map.put("encryptedData", encryptedData);
 map.put("sessionKey", sessionKey);
 map.put("iv", iv);
 map.put("appId", appId);
 Map<String, Object> map1 = new HashMap<>();
 map1.put("wxapplet", map);
 String wxapplet = JSON.toJSON(map1). toString ();
 System.out.println(wxapplet);
 }
}
 

文章来源:智云一二三科技

文章标题:微信小程序用户信息AES-128-CBC Java 解密

文章地址:https://www.zhihuclub.com/172045.shtml

关于作者: 智云科技

热门文章

网站地图