小编典典

Java 安全性:非法密钥大小或默认参数?

all

我之前曾问过一个关于此的问题,但没有得到正确的回答,并且无处可去。

所以我已经澄清了一些关于这个问题的细节,我真的很想听听你关于如何解决这个问题或我应该尝试什么的想法。

我在我的 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 文件完全匹配。第一个中没有其他提供者。


阅读 106

收藏
2022-03-21

共1个答案

小编典典

很可能您现在没有安装无限强度文件。

您可能需要下载此文件:

Java 加密扩展 (JCE) 无限强度管辖策略文件 6

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy
Files 7
下载

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy
Files 8
下载
(仅
Java 8 u162 之前的版本需要)

从 zip 中提取 jar 文件并将它们保存在${java.home}/jre/lib/security/.

2022-03-21