解决AES加密算法在Linux下出现随机加密结果

原创 aeslinux

问题

AES算法在windows下可以正常加密、解密,上传到服务器之后,无法正常工作,每次加密的结果都是随机的。

分析与解决

经检查发现,是加密的密钥在Linux下随机生成造成的。

原代码:

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

修改后代码:

KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");  
secureRandom.setSeed(password.getBytes());                      
kgen.init(128, secureRandom);
SecretKey secretKey = kgen.generateKey();

最后,我是这样解决的。但有的网友说这样还是不行,因为我测试了好几个环境,都没有问题,所以暂时就先这样了。如果你搜索到这里,没有能够解决你的问题,请试着给我留言,并附详细测试环境,我会试着解决。

谢谢。

如果觉得这对你有用,请随意赞赏,给与作者支持
评论 0
最新评论