充气城堡PKCS7填充

时间:2016-01-18 22:33:38

标签: java cryptography bouncycastle

我需要帮助才能在Bouncy Castle java框架中找到这个表达式的实际填充值。有点不确定这些价值观。

encrypt(bytes, iv, secret, "AES/CBC/PKCS7Padding")

2 个答案:

答案 0 :(得分:1)

使用的填充字节与填充字节数相同。因此,如果需要11个字节的填充,那么该填充由字节0x0b的11个副本组成。始终应用填充,因此如果字节数已经是16的倍数,则使用16字节的填充,在这种情况下填充字节为0x10。

这种填充方案具有很好的功能,在解密时,您可以检查填充明文的 last 字节,以确定总共有多少填充字节。

请注意,PKCS7填充不是特定于java的标准,而是一种非常常见的填充方案,与语言无关。

答案 1 :(得分:1)

如果原始数据是N个字节的整数倍,则添加具有值N的额外字节块。这是必要的,因此解密算法可以确定地确定最后一个块的最后一个字节是填充字节,指示添加的填充字节的数量或明文消息的一部分。考虑一个明文消息,它是N个字节的整数倍,明文的最后一个字节是01.没有附加信息,解密算法将无法确定最后一个字节是明文字节还是填充字节。但是,通过在01明文字节之后添加每个值N的N个字节,解密算法总是可以将最后一个字节作为填充字节处理,并从密文的末尾剥去适当数量的填充字节;所述要根据最后一个字节的值去掉的字节数。

PKCS7 padding