1. 程式人生 > >AES 在 Linux 下解密錯誤

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);

參考文章: