Java 加密后解密失败和Illegal key size or default parameters
程序员文章站
2022-07-07 20:19:38
...
最近对接的一个内外网隔离项目,数据同步通过压缩包导入完成同步,对方希望对同步文件进行加密。
考虑到是对文件加密,安全性及开发的需求,初步确定用AES-256-ECB加密。
主要遇到两个坑:
- Java 在Windows上面和Linux上面的SecureRandom对同一个种子生成的key不一样,导致Linux上加密后的文件在windows上无法解密。
原因 :
SecureRandom 默认随机数生成器不一样,Windows上默认是 SHA1PRNG ,Linux大多数默认是 NativePRNG, 除非调用方调用 getInstance 方法返回实例并指定随机数生成器。
解决方案:
KeyGenerator kgen = KeyGenerator.getInstance("AES");
// 通过getInstance指定SecureRandom随机数生成器
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG" );
// 指定种子为约定好的key
secureRandom.setSeed(sKey.getBytes());
kgen.init(256, secureRandom);
- 运行时报错 Illegal key size or default parameters
原因:美国限制 aes 256位 以上加密出口,于是Sun通过权限文件(local_policy.jar, US_export_policy.jar)做了相应限制。
Oracle在其官方网站上提供了无政策限制权限文件(Unlimited Strength Jurisdiction Policy Files),只需要将其部署在JRE环境中,就可以解决限制问题。
解决方案:
下载对应版本的jce包,解压并放到 jdk 文件夹下的 /jre6/lib/security 文件夹中
下载地址:
https://www.oracle.com/technetwork/java/javase/downloads/jce-all-download-5170447.html
转载于:https://www.jianshu.com/p/eb38b2466e0c
上一篇: 牛客练习赛24 D 插排树(最短路练习)
下一篇: 常见问题
推荐阅读
-
Java 加密后解密失败和Illegal key size or default parameters
-
加密异常----Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
-
java.security.InvalidKeyException: Illegal key size or default parameters 加密报错的解决办法
-
【开发笔记】Java 中 AES 加密时报错:Illegal key size or default parameters
-
java ARE加密Illegal key size or default parameters和null问题
-
AES加密时报java.security.InvalidKeyException: Illegal key size or default parameters异常
-
AES加密时报java.security.InvalidKeyException: Illegal key size or default parameters异常