Java几乎各种常用加密算法都能找到对应的实现。因为美国的出口限制,Sun通过权限文件(local_policy.jar、US_export_policy.jar)做了相应限制。因此存在一些问题:
●密钥长度上不能满足需求(如:java.security.InvalidKeyException: Illegal key size or default parameters);
●部分算法未能支持,如MD4、SHA-224等算法;
●API使用起来还不是很方便;一些常用的进制转换辅助工具未能提供,如Base64编码转换、十六进制编码转换等工具。
Oracle在其官方网站上提供了无政策限制权限文件(Unlimited Strength Jurisdiction Policy Files),我们只需要将其部署在JRE环境中,就可以解决限制问题。
解决方法:
http://stackoverflow.com/questions/6481627/java-security-illegal-key-size-or-default-parameters
JDK8 jar包下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
JDK7 jar包下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
windows下把里面的两个jar包:local_policy.jar 和 US_export_policy.jar 替换掉原来jdk安装目录C:\Program Files\Java\jre6\lib\security 下的两个jar包接可以了
Linux环境还需要
在/etc/profile文件里添上了已经更换了的jar路径
如下:
----------------------------------------------------------------------------------------------------------------
JAVA_HOME=/root/javaNeeds/jdk1.8.0_73
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
export CLASSPATH=.:$JAVA_HOME/jre/lib/security/local_policy.jar:$JAVA_HOME/jre/lib/security/US_export_policy.jar
-----------------------------------------------------------------------------------------------------------------
扩展:
真实项目开发肯定在Linux中,前面我们知道Windos下更换JCE的方法,那么的Linux中怎么更换?如果你以为一样去替换jar包,那就大错特错了,因为JDK1.8以上的该目录下压根没有这两个JAR包。(如果真有,就直接替换)
在这里插入图片描述
针对这种情况,我们的解决方式为:vim 命令打开java.security文件,将注释掉的 #crypto.policy=unlimited 打开,然后保存即可
---------------------
写好profile文件后
source profile 文件
重启tomcat就ok了