AES 在 Linux 下解密错误

javax.crypto.BadPaddingException:Given final block not properly padded。

解决方法

修改前代码:

KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, new SecureRandom(key.getBytes()));
SecretKey secretKey = kgen.generateKey();

以上方法在Windows下可以正常运行,且加解密成功,但是在 Linux 下运行时,解密时会报错:Given final block not properly padded。

修改后代码:

KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");//①
random.setSeed(key.getBytes());
kgen.init(128, random);

参考文章:

  1. java中的SecureRandom在linux中的实现
  2. JAVA AES加解密在linux中的问题

你可能感兴趣的:(BUGs)