Java开发中的加密、解密、签名、验签,密钥,证书(上篇)( 四 )
使用方法如下:@Testpublic void testAES() throws Exception {byte[] encodedKey = SecurityUtil.generateAESKey();String data = "http://kandian.youth.cn/index/this is a good boy";byte[] encryptedData = http://kandian.youth.cn/index/SecurityUtil.encryptByAES(encodedKey, data.getBytes());byte[] decryptedData = SecurityUtil.decryptByAES(encodedKey, encryptedData);Assert.assertEquals(data, new String(decryptedData));}
虽然AES支持128、192或 256的密钥长度 , 但是当我们使用192或256位长度的密钥时 , 会收到这个异常:java.security.InvalidKeyException: Illegal key size or default parameters
java.security.InvalidKeyException: Illegal key size or default parameters at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1026) at javax.crypto.Cipher.implInit(Cipher.java:801) at javax.crypto.Cipher.chooseProvider(Cipher.java:864) at javax.crypto.Cipher.init(Cipher.java:1249) at javax.crypto.Cipher.init(Cipher.java:1186) at com.example.architecture.util.SecurityUtil.encryptByAES(SecurityUtil.java:161) at com.example.architecture.util.SecurityUtilTest.testAES(SecurityUtilTest.java:97) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
原因是JRE中自带的local_policy.jar 和US_export_policy.jar是支持128位密钥的加密算法 , 而当我们要使用192或256位密钥算法的时候 , 已经超出它支持的范围 。
解决方案:去官方下载JCE无限制权限策略文件 。
JDK5 | JDK6 | JDK7| JDK8
下载后解压 , 可以看到local_policy.jar和US_export_policy.jar以及readme.txt
- 如果安装了JRE , 将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件 。
- 如果安装了JDK , 还要将两个jar文件也放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件 。
【Java开发中的加密、解密、签名、验签,密钥,证书(上篇)】至此 , 上篇结束 , 更多精彩内容 , 欢迎继续阅读下篇 。
参考资料:
对称加密/2152944
非对称加密算法/1208652
- 联想正开发下一代ThinkReality智能眼镜
- Apple Glass正进入第二开发阶段 目标成品重量轻 续航长
- 运动计数开发项目的对抗赛:飞算全自动软件工程平台碾压传统模式
- 程序员为教师妻子开发应用:将iPhone变成文档摄像头
- 想自学Python来开发爬虫,需要按照哪几个阶段制定学习计划
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 人脸识别设备主板如何选型 软硬整合大幅缩短开发时间
- 学习大数据是否需要学习JavaEE
- 田伟院士:我眼中的医疗机器人
- Mozilla将默认禁用Firefox中的退格键以防止用户编辑数据丢失