-2

我的密码加密和解密 java 文件出现以下异常。

我在大多数网站上都得到了解决这个问题的方法,就是用 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 替换现有的安全策略文件。

我也这样做了,但仍然会出现同样的错误。

但是相同的代码在带有 Linux 操作系统的 jdk1.6 中运行良好。我已经从网站复制了最新的 1.7 兼容 Java 加密扩展 (JCE) 无限强度管辖策略文件。

JDK 版本 - jdk1.7.0_25
服务器操作系统 - Linux

异常:
java.security.InvalidKeyException:密钥长度必须在 40 到 1024 位之间

4

1 回答 1

0

您在评论中解释说传递的密钥长度为 512 字节。错误消息是“密钥长度必须在 40 到 1024 位之间”。

512 字节 * 8 位 = 4096 位。你的钥匙确实太长了。

如果您没有解码之前使用长度超过 1024 位的密钥编码的内容,则使用此代码在 128 字节(= 1024 位)处截断:

byte[] key = HexDecode(s1);
if (key.length > 128)
{
    key = Arrays.copyOf(key, 128);
}
SecretKeySpec secretkeyspec = new SecretKeySpec(key, "RC4");
于 2015-06-11T11:59:54.723 回答