前段时间测试,需要与银行交互,在交互过程中使用到了,X.509证书。
由于生产环境与开发环境证书不同,遂为了测试生产是否联通,使用生产证书链接银行。
银行方面提供的证书加密算法:Provider是org.bouncycastle.jce.provider.BouncyCastleProvider
在加载证书时 会报如下错误:
java.io.IOException: exception decrypting data - java.security.InvalidKeyException: Illegal key size
at org.bouncycastle.jce.provider.JDKPKCS12KeyStore.cryptData(Unknown Source)
at org.bouncycastle.jce.provider.JDKPKCS12KeyStore.engineLoad(Unknown Source)
at java.security.KeyStore.load(KeyStore.java:1185)
经Google、百度后分析为jdk的加密组件限制密钥长度。
使用jdk官网提供的扩展包覆盖系统中jdk的jce包即可解决此问题
本人为jdk1.6所以下载1.6的jce扩展包
下载地址为:
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR
Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6
Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 5.0
Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 1.4.2
Java Cryptography Extension (JCE) 1.2.2
Java Cryptography Extension (JCE) Documentation 1.2.2
将下载的jce包覆盖本地,本地路径为
%JAVA_HOME%\jre\lib\security我的为:D:\Program Files\Java\jdk1.6.0_30\jre\lib\security
local_policy.jar
US_export_policy.jar
重启服务后问题解决。
对比替换前后发现:后面的去掉了 长度限制
注:jdk 7+的jce unlimited Strength Jurisdiction Policy Files 需要在现行发布的版面上下载,
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
jdk6一下的在这个地址下载
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR
1.4、1.5、1.6各版本的jce无限制扩展包见附件:
参考地址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR
http://http://www.bouncycastle.org/
http://87426628.blog.163.com/blog/static/606936182013104883902/
相关推荐
JCE 加密、解密算法
jce 密钥限制,jce有密钥长度限制,下载替换后可以突破这个限制
在使用aes加解密时,如果密钥大于128, 会抛出java.security.... 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制.
(java加密解密)如何实现JCE接口的各种算法 jce加密解密 很好的资料 很详细
1、javax.crypto.Cipher 类提供加密和解密的功能,它构成了 Java Cryptography Extension (JCE) —— Java 加密扩展框架的核心。这些都是 Java JDK 原生的 API,不是第三方的。 2、Cipher 的 getInstance(String ...
由于默认JDK8是不能使用PBEWITHMD5ANDTRIPLEDES等高强度加密算法的, 需要把jce_policy-8.zip中的两个jar包拷贝到<JRE_HOME>\lib\security下面, 替换掉两个原有的同名文件,以开启对高强度加密算法支持
JCE是java加密扩展包,由于美国出口限制规定,JCE对部分国家是限制出口的,致使其加密长度有所缩减,例如,DES算法因受到军事出口限制,目前仅提供56位的密钥长度,而实际安全要求至少要128位。对于出口限制,SUN...
Java加密扩展的出口限制文件,包含JDK15、1.6、1.7、1.8各版本的文件。US_export_policy.jar local_policy.jar
JCE,Java Cryptography Extension 1.8, java jce8 java jce
jdk8无政策限制权限文件,用于AES加密算法,AES加密扩展包因为某些国家的进口管制限制,Java发布的运行环境包中的加解密有一定的限制。比如默认不允许256位密钥的AES加解密,解决方法就是修改策略文件。 因为某些国家...
下载解压后,把jar文件上传到需要安装jce机器上JDK或JRE的security目录下,覆盖源文件即可。 JDK:将两个jar文件放到%JDK_HOME%\jre\lib\security下 JRE:将两个jar文件放到%JRE_HOME%\lib\security下 覆盖之前,...
JAVA 加密 JCE Java密码扩展的基础 关于JCE的基础
jce_policy-8,JCE(Java Cryptography Extension)是一组包,它们提供用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现。 它提供对对称、不对称、块和流密码的加密支持,它还支持...
包含JDK1.6和JDK1.7的不受限制的local_policy.jar和US_export_policy.jar
jdk8加密使用的jce_policy-8替换原jar包
jdk8无政策限制权限文件,用于AES加密算法,AES加密扩展包因为某些国家的进口管制限制,Java发布的运行环境包中的加解密有一定的限制。比如默认不允许256位密钥的AES加解密,解决方法就是修改策略文件。 因为某些国家...
113页资料全面体现JCE安全,加密算法,绝对有帮助。 如基本的单向加密算法: ● BASE64 严格地说,属于编码格式,而非加密算法 ● MD5(Message Digest algorithm 5,信息摘要算法) ● SHA(Secure Hash Algorithm...
jce_policy-8,JCE(Java Cryptography Extension)是一组包,它们提供用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现。 它提供对对称、不对称、块和流密码的加密支持,它还...
JDK8 JCE 支持256位加密
用于替换jdk里的两个jar,解决无法使用AES192、256位加密解密的问题 jce7,jce8