【发布时间】:2015-09-23 18:32:51
【问题描述】:
AES/GCM 的填充模式是什么?我知道它可以是 NoPadding,因为在 ECB 模式下它可以是 PKCS5Padding,在 GCM 模式下呢?在 JCE 界面中,我们需要提供“算法/模式/填充”(Reference)。
所以我使用下面的代码来获取实例,它在 JDK 中工作,但在 IBM SDK 中失败了
找不到支持 AES/GCM/PKCS5Padding 的提供程序
Cipher.getInstance("AES/GCM/PKCS5Padding");
填充的真正用例是什么?
【问题讨论】:
-
填充描述了链中的块如何对齐和填充以匹配预期的块大小。 JRE 可以与不同的安全提供程序一起运行。 Oracle SDK 包括他自己的安全性极低的美国令人愉快的 Oracle 安全提供程序。我不知道 IBM SDK 中哪个 Security Prodiver 是默认的。最佳实践是在使用不同的 JRE 提供者(如 BouncyCastle)时包含您自己的安全提供者。或者在开发系统上使用目标系统的安全提供程序,比如当你为安卓开发时,OpenSSl 安全提供程序是默认的。希望有帮助
-
这是我认识的最好的安全提供商:bouncycastle.org/java.html
-
感谢回复,我不需要介绍第三个库。所以我需要使用 JDK 内置提供程序。像 SUNJCE,但在 IBM sdk 中,我猜它提供了自己的提供程序,但是,我的问题是,“AES/GCM/PKCS5Padding”是否具有合法价值?我没有发现任何在 GCM 中使用 PKCS5Padding 的示例,甚至 isaacyang1988.googlecode.com/svn/trunk/Crypt/src/org/… 这篇文章也有类似的测试用例,它不是正确的模式
-
看看Artjom的回答。否则,编写一个程序来检查您的 jre 的默认安全提供程序并打印出您所需算法的可能值。选择两边都存在的值就可以了
标签: java algorithm aes padding aes-gcm