报错信息:javax.crypto.BadPaddingException: Given final block not properly padded
//密钥
public static final String DEFATULT_DES_KEY = "bq0ZtoDOj111";
//解密
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, new SecureRandom(DEFATULT_DES_KEY.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);// 初始化
return new String(cipher.doFinal(Base64.decodeBase64(data))); //执行该句的时候会报错
//原因分析
SecureRandom 实现完全随操作系统本身的內部状态,该实现在 windows 上每次生成的 key 都相同,但是在 linux 系统上则不同。
//解决(加解密都用这个),替换kgen.init()
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG" );
secureRandom.setSeed(DEFATULT_DES_KEY .getBytes());
kgen.init(128, secureRandom);