在linux服务器下使用AES加密后win上服务器解密报异常: javax.crypto.BadPaddingException:
(2017-11-20 17:47:27)
公司他们写了一个工具类,使用的是AES加、解密,但是出现个问题,就是:在linux服务器下使用AES加密后win上服务器解密报异常: javax.crypto.BadPaddingException:
Given final block not properly padded,
查了下是因为:在linux下,SecureRandom
实现完全隨操作系统本身的內部狀態,除非調用方在調用 getInstance 方法之後又調用了 setSeed 方法;该实现在
windows 上每次生成的 key 都相同,但是在 solaris 或部分 linux
系统上则不同,所以会造成解密不了,正确的处理方式是:指定生成的seed-->对应代码:
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"
);
secureRandom.setSeed(keycontent.getBytes());
secureRandom.setSeed(keycontent.getBytes());
新老代码如下:
老:
kgen.init(128,
new
SecureRandom(salt.getBytes()));
新代码:
SecureRandom secureRandom =
SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(salt.getBytes());
kgen.init(128, secureRandom);

加载中…