完美解决Linux(Android)操作系统下aes解密失败的问题

转载 2016年05月31日 00:22:02

完美解决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( " 初始化密钥出现异常 " );
        }
      } 

相关文章推荐

解决Linux下AES解密失败

前段时间,用了个AES加密解密的方法,详见上篇博客AES加密解密。加解密方法在window上测试的时候没有出现任何问题,将加密过程放在安卓上,解密发布到Linux服务器的时候,安卓将加密的结果传到Li...

关于AES在Linux下加密解密出错问题解决方案

现象描述: windows 上加解密正常, linux 上加密正常,解密时发生如下异常 : javax.crypto.BadPaddingException: ...

Android中AES加密解密。解决密文不唯一、解密不出明文问题

AES加密方式是目前来看值得选择的加密方式,但是在Android中使用AES加密时,有些坑看似不大,却让很多人栽了跟头。 Android 4.2之后SHA1PRNG强随意种子算法调用不同,需要区别调...
  • xu_vv
  • xu_vv
  • 2015-09-07 10:40
  • 348

关于Android中使用AES加密解密的问题

当你百度java怎么进行aes加密、解密时,会百度到很多这样的代码 代码一(部分): public static String encode(String key, String src) thr...

关于Android AES 加解密中的那些问题

在网上看了很多关于AES解密的案例、代码,都没有解决加密后无法解密的问题,最后在一个很小很小的角落中找到了答案,学习之余也给大家分享一下。 废话不多说直接上代码。 import java.securi...

android平台上AES,DES加解密及问题

在使用java进行AES加密的时候,会用到如下方法: SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); 但是在android4...

Java实现AES的128、256位密钥加解密算法 并 解决Illegal key size or default parameters问题

Java实现AES的128、256位密钥加解密算法 并 解决Illegal key size or default parameters问题

AES加密解密Windows下跟linux下结果不同的解决方案

AES加密解密Windows下跟linux下结果不同的解决方案

Genymotion插件启动失败问题完美解决

Win10系统完美解决Genymotion启动模拟机失败问题,里面有几种常见的错误调试方法,都是网上搜的综合一下,供大家少走弯路
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)