完美解决Linux(Android)操作系统下aes解密失败的问题
2016-05-31 00:22
543 查看
完美解决Linux操作系统下aes解密失败的问题
作者: 字体:[增加 减小] 类型:转载 时间:2013-08-28 我要评论以下是针对在Linux操作系统下关于AES解密失败的问题进行了详细的分析介绍,需要的朋友可以过来参考下
现象描述:
windows上加解密正常,linux上加密正常,解密时发生如下异常:
复制代码代码如下:
javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at chb.test.crypto.AESUtils.crypt(AESUtils.java:386)
at chb.test.crypto.AESUtils.AesDecrypt(AESUtils.java:254)
at chb.test.crypto.AESUtils.main(AESUtils.java:40)
解决方法:
经过检查之后,定位在生成KEY的方法上,如下:
复制代码代码如下:
public static SecretKey getKey (String strKey) {
try {
KeyGenerator _generator = KeyGenerator.getInstance( "AES" );
_generator.init(128, new SecureRandom(strKey.getBytes()));
return _generator.generateKey();
} catch (Exception e) {
throw new RuntimeException( " 初始化密钥出现异常 " );
}
}
修改到如下方式,问题解决:
复制代码代码如下:
public static SecretKey getKey(String strKey) {
try {
KeyGenerator _generator = KeyGenerator.getInstance( "AES" );
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG" );
secureRandom.setSeed(strKey.getBytes());
_generator.init(128,secureRandom);
return _generator.generateKey();
} catch (Exception e) {
throw new RuntimeException( " 初始化密钥出现异常 " );
}
}
相关文章推荐
- Greg Kroah-Hartman 解释内核社区是如何使 Linux 安全的
- 一天一个shell命令 文本操作系列-linux dd使用教程
- CentOS7安装gitlab中文版
- Linux 查看CPU信息,机器型号,内存等信息
- Linux下安装LuManager
- 【Linux利用远程SSH连接】SecureCRT中文出现乱码解决办法 Linux服务器技术
- 教你如何在linux操作系统下玩【俄罗斯方块】高清+语音教程
- 修改linux操作系统的时间可以使用date指令 运维系统工程师必会技术
- linux命令行模式下实现代理上网 专题
- linux系统工程师修改打开文件数限制代码教程。服务器运维技术
- linux下svn连接上Visual SVN(win):报SSL错误 报错
- linux实践——简单程序破解
- Linux下命令
- linux 字符设备
- linux(rh7)下/etc/shadow文件分析
- Linux中的task_struct
- linux高性能服务器编程之poll
- linux学习1 Linux系统介绍和RHEL7.2操作系统的安装
- linux下的进程控制块task_struct详解
- 常用的Linux命令