Java安全 AES加密密钥长度

3
当密钥长度为128位时,一切正常。但是当我使用长度为192或256位的密钥时,出现了以下异常。
java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.a(DashoA13*..)
at javax.crypto.Cipher.init(DashoA13*..)
at javax.crypto.Cipher.init(DashoA13*..)

我发现了这篇文章:Java安全性:非法密钥大小或默认参数?。但是,即使我已经下载了jar文件并将其放置在${java.home}/lib/security/文件夹中,我仍然会遇到相同的异常。

2个回答

15

Java默认的最大强度为128位。

您需要一组名为Java加密扩展(JCE)无限强度管辖策略文件的文件,目前可在Java SE下载页面上获取。该zip文件包含几个策略jar文件,您需要将其复制到JRE的{java.home}/jre/lib/security目录中现有的文件之上。

这将让您将密钥强度更改为128位以上。


但是我从http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html下载了jar文件,并将其放置在${java.home}/lib/security/下,仍然出现异常。 - Cacheing
是的,你所需要做的就是将那些jar文件放置在正在运行Java程序的JRE的lib/security目录中。 - Cristian Meneses
2
@Cacheing 请确保它们放在 ${java.home}/jre/lib/security 中,而不是你上面说的 ${java.home}/lib/security。 - Matthew Farwell
@Christian 关键字大小限制为128位,而不是字节。 - peter

0
你使用的是哪个Java实现?
如果你查看文档(比如这里),你会发现它们可能只支持特定的密钥长度。这个只支持128位。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接