Java安全性:非法密钥大小或默认参数?
我之前曾问过一个关于这个问题的问题,但没有得到正确的回答,也没有得到任何答案。
所以我已经澄清了关于这个问题的一些细节,我真的很想听听你的想法,我该如何解决这个问题或者我应该尝试什么。
我的Linux服务器上安装了Java 1.6.0.12 ,下面的代码运行得非常完美。
String key = "av45k1pfb024xa3bl359vsb4esortvks74sksr5oy4s5serondry84jsrryuhsr5ys49y5seri5shrdliheuirdygliurguiy5ru";
try {
    Cipher c = Cipher.getInstance("ARCFOUR");
    SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "ARCFOUR");
    c.init(Cipher.DECRYPT_MODE, secretKeySpec);
    return new String(c.doFinal(Hex.decodeHex(data.toCharArray())), "UTF-8");
} catch (InvalidKeyException e) {
    throw new CryptoException(e);
}
今天,我在我的服务器用户上安装了Java 1.6.0.26 ,当我尝试运行我的应用程序时,出现以下异常。 我的猜测是它与Java安装配置有关,因为它在第一个工作,但在更高版本中不起作用。
Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
    at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
    at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
    at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
    at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6]
    at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6]
    at my.package.Something.decode(RC4Decoder.java:25) ~[my.package.jar:na]
    ... 5 common frames omitted
  第25行是: c.init(Cipher.DECRYPT_MODE, secretKeySpec); 
  笔记: 
  *服务器的1.6.0.12 java目录中的java.security几乎与1.6.0.26 java.security文件完全匹配。  第一个没有额外的提供者。 
  *上一个问题在这里。 
很可能你现在没有安装无限强度文件。
您可能需要下载此文件:
Java密码扩展(JCE)无限强度管辖权策略文件6
Java加密扩展(JCE)无限强度管辖权策略文件7下载
Java加密扩展(JCE)无限强度管辖权策略文件8下载
  从压缩包中提取jar文件并将其保存在${java.home}/jre/lib/security/ 。 
JRE / JDK / Java 8权限文件可以在这里找到:
Java加密扩展(JCE)无限强度管辖权策略文件8下载
  就像詹姆斯上面所说: 
  安装${java.home}/jre/lib/security/ 。 
对于JAVA 7,下载链接是jce-7-下载
  复制Java  jdk1.7.0_10  jre  lib  security中的两个下载的jar文件 
  把旧罐子放在安全的一边。 
  对于JAVA 8,下载链接是jce-8-download 
  复制Java  jdk1.8.0_45  jre  lib  security下载的jar文件 
  把旧罐子放在安全的一边。 
上一篇: Java Security: Illegal key size or default parameters?
下一篇: What happens when a duplicate key is put into a HashMap?
