带有 PKCS#5 填充的 AES

6 java encryption bouncycastle jce aes

在很多地方,我看到 Java 代码使用 AES 和 PKCS#5 填充。我不明白这怎么可能行得通。

PKCS#5 填充旨在与块大小 <= 8 字节的密码一起使用。AES 的块大小为 16 字节。所有使用 AES 和 PKCS#5 的代码都是错误的吗?或者框架内部是否使用 PKCS#7 来代替?所讨论的框架是 Sun 提供的 Java、JCE 和 BouncyCastle。

Maa*_*wes 4

该代码确实使用 PKCS#7 代替。指定的原因"PKCS5Padding"很可能是由于与较旧的 DES 和 3DES 密码的兼容性。请注意,PKCS#5 填充正好是 8 个字节,不能少于 8 个字节。为了兼容性,Bouncy Castle 通常遵循 Sun/Oracle 提供程序,尽管您也可以使用更正确的"PKCS7Padding"Bouncy Castle 提供程序。

有关加密货币网站的更多信息(免责声明:指向我自己的热门问答)。