java.security.NoSuchAlgorithmException: AES KeyGenerator not available

在项目开发中,使用AES加密算法进行数据加密时,有可能产生的错误。

加密方法:

private Key initKeyForAES(String key) throws NoSuchAlgorithmException {  
        if (null == key || key.length() == 0) {  
            throw new NullPointerException("key not is null");  
        }  
        SecretKeySpec key2 = null;  
        SecureRandom random = SecureRandom.getInstance("SHA1PRNG");  
        random.setSeed(key.getBytes());  
        try {  
            KeyGenerator kgen = KeyGenerator.getInstance("AES");  
            kgen.init(128, random);  
            SecretKey secretKey = kgen.generateKey();  
            byte[] enCodeFormat = secretKey.getEncoded();  
            key2 = new SecretKeySpec(enCodeFormat, "AES");  
        } catch (NoSuchAlgorithmException ex) {  
            throw new NoSuchAlgorithmException();  
        }  
        return key2;  
  
    }  

有可能会产生的错误:

java.security.NoSuchAlgorithmException: AES KeyGenerator not available 
 ...
javax.crypto.BadPaddingException: Given final block not properly padded
        at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:811)
        at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:676)
        at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:313)
        at javax.crypto.Cipher.doFinal(Cipher.java:2087)
        at com.dcc.core.util.AesCoder.decrypt(AesCoder.java:67)
        at com.dcc.server.controller.EntranceController.process(EntranceController.java:68)
        at sun.reflect.GeneratedMethodAccessor48.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)

我这里的原因是:

          此处错误是JRE设置错误,AES需要用到sunjce_provider.jar包,jre1.6中未提供。
  jre1.7的扩展包中提供了,所以需要把jre设置成1.7便能正常运行。

  

         由于开发需要,我使用的JDK环境经常在1.7,1.8之间调整。如果报同样的错误,调整jre的环境为1.7的。目前错误以解决。如果有其它原因造成的错误。欢迎大家留言交流!


        参考:http://zjhdreams.iteye.com/blog/2175250



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值