我在密码加密和解密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位之间
答案 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");