首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java安全:非法的密钥大小或默认参数?

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

Stack Overflow用户
提问于 2011-06-26 09:40:16
回答 19查看 456.1K关注 0票数 430

我之前问过一个关于这个问题的问题,但是没有得到正确的回答,什么也没有得到。

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

我在我的服务器上安装了LinuxJava1.6.0.12,下面的代码运行得很好。

代码语言:javascript
复制
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);
}

今天我在我的服务器用户上安装了Java1.6.0.26,当我尝试运行我的应用程序时,我得到了以下异常。我猜测这与Java安装配置有关,因为它在第一个版本中有效,但在后一个版本中不起作用。

代码语言:javascript
复制
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文件几乎完全匹配。第一个中没有额外的提供程序。

*前一个问题是here

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2011-06-26 09:48:30

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

您可能需要下载此文件:

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 (仅Java8 u162之前的版本需要)

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

票数 746
EN

Stack Overflow用户

发布于 2014-04-24 05:11:11

可以在以下位置找到JRE/JDK/Java 8辖区文件:

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download

就像詹姆斯上面说的:

${java.home}/jre/lib/security/中安装文件。

票数 57
EN

Stack Overflow用户

发布于 2017-10-21 05:38:48

对于Java9、Java 8u161Java 7u171Java 6u181,这一限制现在默认情况下是禁用的。参见issue in Java Bug Database

Java 8u151开始,您可以通过编程方式禁用此限制。

在较早的版本中,必须单独下载和安装

辖区文件,以允许JDK使用无限制的加密。下载和安装步骤不再是必需的。

相反,您现在可以在第一次使用JCE类之前调用以下代码行(即,最好在应用程序启动后立即调用):

代码语言:javascript
复制
Security.setProperty("crypto.policy", "unlimited");
票数 46
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6481627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档