博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javax.crypto.BadPaddingException: Given final block not properly padded解决方案
阅读量:7281 次
发布时间:2019-06-30

本文共 1885 字,大约阅读时间需要 6 分钟。

JAVA的AES加密解密在windows上测试一切正常,上传到空间上在解密时就出现错误。空间是Linux系统

查看日志发现出现此异常

  javax.crypto.BadPaddingException: Given final block not properly padded

后面百度了一下终于解决了,在生成key的时候出现错误的

原来的代码:

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

主要是红色部分的问题

修改后代码:

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;    }

其实就是SecureRandom创建的方式不同而引起的错误,具体原理我也不懂,因为加密解密代码都是网上搜的,具体没研究过这个。总之能解决问题就好。

我是从这找到解决方案的:http://wenku.baidu.com/link?url=wOibKHENi2Z5gFOL5prjGBE8RES1dZEZlrvfY1NTl89QJWtTwXUNLmgEXVYWGBGXR25oRvOKPJTI5M3o95KW0yIHwgFVEnJiZt1-0YvRQua

随心地记录一些东西,以备不时之需。

转载于:https://www.cnblogs.com/lizhonghua34/p/8964509.html

你可能感兴趣的文章
人生感悟 --如何提升工作效率
查看>>
我的友情链接
查看>>
浅谈的springboot的项目部署方式
查看>>
构造函数与虚构函数
查看>>
TeamView修改ID
查看>>
DevExpress v18.1新版亮点——WPF篇(五)
查看>>
工作心得
查看>>
linux上安装组播测试工具ssmping
查看>>
物联网蓝牙发展以后将会普及那些领域?
查看>>
centos7配置iscsi网络存储
查看>>
决心书
查看>>
lua中print
查看>>
ios 使用UIImagePickerController 修改头像
查看>>
jqgrid初学一
查看>>
TypeScript React Starter
查看>>
97259
查看>>
php实现分页代码
查看>>
linux中文件索引节点知识
查看>>
掌握这10条规范,轻松搞定Git!
查看>>
Linux第一周学习笔记(2)
查看>>