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

Android端AES加密Bug解决方案

数据安全一直是一个焦点的问题,本文主要介绍的是AES加密的bug解决方案。DES采用的是56的加密密钥,在计算机计算能力飞速发展的今天,已经不再安全,经过算法优化的暴力破解方式能在一天之内就将DES密...
  • u011160994
  • u011160994
  • 2015年08月12日 15:03
  • 968

【android】几个和密码相关的问题分析(开机密码输入无效、FDE后改变密码无效、FDE后解密失败)

密码输入无效问题 复现步骤: 1.手机设置密码(pin,图案,密码都可以),重启手机,进入验证开机密码界面 2.连续输入错误5次密码,提示需要等到30s才能输入,在此期间重启手机,开机输入正确密...
  • sinat_34606064
  • sinat_34606064
  • 2017年09月28日 15:10
  • 445

解决Linux下AES解密失败

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

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

现象描述: windows 上加解密正常, linux 上加密正常,解密时发生如下异常 : javax.crypto.BadPaddingException: ...
  • qq_26188423
  • qq_26188423
  • 2017年03月06日 15:38
  • 387

Android AES加密工具类,解决只能加密不能解密问题

import android.annotation.SuppressLint; import java.security.SecureRandom; import javax.crypto.C...
  • a1047189887
  • a1047189887
  • 2015年12月31日 17:11
  • 863

iOS AES解密 我遇到的问题

底层给得key是:static uint8 AesKey[16]={0x01,0x02,0x03,0x04,0x05,0,0x07,0,0x09,0x10,0,0x12,0,0x14,0,0x16};...
  • u012143568
  • u012143568
  • 2015年06月23日 18:03
  • 1032

使用AES加密解密在windows上使用没有问题,在Linux(Centos6.5)上出现解密失败的解决方法

据网上资料所知,是因为在加密后,因为不同系统环境差异所致解密失败。我把自己解决的方法说一下: 在加密的时候最好用BASE64Encoder去封装一下即可(不封装的话解密的时候会莫名其妙的丢掉加密的字...
  • u011835473
  • u011835473
  • 2016年06月16日 11:08
  • 910

AES 在 Linux 下解密错误

javax.crypto.BadPaddingException:Given final block not properly padded。
  • chritina
  • chritina
  • 2017年04月26日 23:51
  • 616

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

AES加密解密Windows下跟linux下结果不同的解决方案
  • abc8049156
  • abc8049156
  • 2015年12月17日 16:10
  • 2736

解决iOS、Android、Java加解密不一致的问题(DES、AES)

解决iOS、Android、Java加解密不一致的问题。 让人蛋疼的加密与解密。 这两天在做iOS和Android客户端与Java服务器端的数据加密与解密,一开始使用的是DES,但是觉得不...
  • joeyon
  • joeyon
  • 2015年09月21日 11:02
  • 3991
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:完美解决Linux(Android)操作系统下aes解密失败的问题
举报原因:
原因补充:

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