【发布时间】:2014-01-15 03:29:06
【问题描述】:
我在使用 AES 256 密钥加密字节时遇到问题。 我已经安装了策略。这是我所做的:
- 下载文件:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
- 我将文件 local_policy 和 US_export_policy 移动到目录 /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/lib/security
- 我重启了mac
但我仍然收到带有以下代码的错误消息:
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(256);
SecretKey secretKey = keyGenerator.generateKey();
Cipher decryption = Cipher.getInstance("AES/CBC/PKCS5PADDING");
decryption.init(Cipher.DECRYPT_MODE, secretKey,
new IvParameterSpec(secretKey.getEncoded())); // <-- Illegal key size
我的 Java 版本:
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
我必须做什么,才能使用 256 AES 加密?
【问题讨论】:
-
代码格式应该正确。为什么要回滚我修复格式的编辑?
-
对不起,我不知道你编辑了我的文字。
-
好的,我把修复放回去了。
-
请不要将密钥用作 IV - 您将面临恢复密钥的选择密文攻击。如果你必须使用固定的 IV,0 会更安全。
-
谢谢,但为什么我不应该使用填充?如果不知道密钥长度,那会更安全,不是吗?
标签: java encryption aes sha256