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

 Line 25是:
 c.init(Cipher.DECRYPT_MODE, secretKeySpec);
 笔记:
*服务器的1.6.0.12 java目录上的java.security几乎完全与1.6.0.26 java.security文件完全匹配。第一个没有额外的提供商。
*以前的问题是here

回答:

很可能你现在没有安装无限的强度文件。
您可能需要下载此文件:
 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6

 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 Download
 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download
从zip中提取jar文件并将其保存在${java.home}/jre/lib/security/

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Java Security: Illegal key size or default parameters?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

7 + 2 =