ase加密放linux报错_AES对称加密适配linux系统

采用aes加密解密时,发现正常在windows下正常运行的功能,部署到linux环境中出现解密报错的情况,报错信息如下:

javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.

at com.sun.crypto.provider.CipherCore.unpad(CipherCore.java:975)

at com.sun.crypto.provider.CipherCore.fillOutputBuffer(CipherCore.java:1056)

at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:853)

at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:446)

经过翻阅资料发现,windows和linux对相同明文加密产生的结果是不同的;其次linux对明文解密过程中会抛出异常。

因此进行了如下修改:

修改前:

KeyGenerator kgen = KeyGenerator.getInstance("AES");// 创建AES的Key生产者

kgen.init(128, new SecureRandom(password.getBytes()));

修改后:

String charset = "utf-8";

KeyGenerator kgen = KeyGenerator.getInstance("AES");// 创建AES的Key生产者

SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG") ;

secureRandom.setSeed(password.getBytes(charset));

kgen.init(128, secureRandom);

文章来源: www.oschina.net,作者:高乐钏,版权归原作者所有,如需转载,请联系作者。

原文链接:https://my.oschina.net/u/3786691/blog/3163723

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值