AES加密打包成jar文件报错
// 设置加密模式为AES的CBC模式
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec keySpec = new SecretKeySpec(aesKey, "AES");
IvParameterSpec iv = new IvParameterSpec(aesKey, 0, 16);
cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv);
// 加密
byte[] encrypted = cipher.doFinal(unencrypted);
当执行到
cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv);
时, 如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size
异常. 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制.调试正常,但导出成jar文件执行时会报错
处理办法: 在官方网站下载JCE无限制权限策略文件
【AES加密打包成jar文件报错】JDK7的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK8的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt
如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件
如果安装了JDK,还要将两个jar文件也放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件
我下载放在网盘
链接:https://pan.baidu.com/s/12B9mgKGL7XsKPKrRCrThQw
提取码:maeg
推荐阅读
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 对称加密和非对称加密的区别
- Ⅴ爱阅读,亲子互动——打卡第178天
- 我错了,余生不再打扰
- Android中的AES加密-下
- 2018-3-24
- 日志打卡
- 以读攻“毒”唤新活动曹彦斌打卡第二天
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 爷爷睡了