密钥长度必须介于40到1024位

时间:2015-06-11 10:30:48

标签: java encryption jce rc4-cipher

我在密码加密和解密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位之间

1 个答案:

答案 0 :(得分: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");