加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

在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());  
新老代码如下:
老:
kgen.init(128, new SecureRandom(salt.getBytes()));
新代码:
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");  
secureRandom.setSeed(salt.getBytes());
kgen.init(128, secureRandom);

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有