充气城堡 PKCS7 填充
Bouncy Castle PKCS7 padding
我需要帮助才能在 Bouncy Castle java 框架中找到此表达式的实际填充值。有点不确定这些值。
encrypt(bytes, iv, secret, "AES/CBC/PKCS7Padding")
使用的填充字节与填充字节数相同。因此,如果需要 11 个字节的填充,则该填充由字节 0x0b 的 11 个副本组成。始终应用填充,因此如果字节数已经是 16 的倍数,则使用 16 个字节的填充,在这种情况下填充字节为 0x10。
这种填充方案有一个很好的特点,即在解密时,您可以检查填充明文的最后字节以确定总共有多少个填充字节。
请注意,PKCS7 填充不是 java-specific 标准,而是一种非常常见的独立于语言的填充方案。
如果原始数据是N字节的整数倍,则添加一个额外的值为N的字节块。这是必要的,因此解密算法可以确定最后一个块的最后一个字节是填充字节,指示添加的填充字节数还是明文消息的一部分。考虑一个明文消息,它是 N 字节的整数倍,明文的最后一个字节是 01。没有附加信息,解密算法将无法确定最后一个字节是明文字节还是填充字节。但是,通过在 01 明文字节之后添加 N 个字节,每个字节的值为 N,解密算法始终可以将最后一个字节视为填充字节,并从密文末尾去除适当数量的填充字节;表示根据最后一个字节的值剥离的字节数。
我需要帮助才能在 Bouncy Castle java 框架中找到此表达式的实际填充值。有点不确定这些值。
encrypt(bytes, iv, secret, "AES/CBC/PKCS7Padding")
使用的填充字节与填充字节数相同。因此,如果需要 11 个字节的填充,则该填充由字节 0x0b 的 11 个副本组成。始终应用填充,因此如果字节数已经是 16 的倍数,则使用 16 个字节的填充,在这种情况下填充字节为 0x10。
这种填充方案有一个很好的特点,即在解密时,您可以检查填充明文的最后字节以确定总共有多少个填充字节。
请注意,PKCS7 填充不是 java-specific 标准,而是一种非常常见的独立于语言的填充方案。
如果原始数据是N字节的整数倍,则添加一个额外的值为N的字节块。这是必要的,因此解密算法可以确定最后一个块的最后一个字节是填充字节,指示添加的填充字节数还是明文消息的一部分。考虑一个明文消息,它是 N 字节的整数倍,明文的最后一个字节是 01。没有附加信息,解密算法将无法确定最后一个字节是明文字节还是填充字节。但是,通过在 01 明文字节之后添加 N 个字节,每个字节的值为 N,解密算法始终可以将最后一个字节视为填充字节,并从密文末尾去除适当数量的填充字节;表示根据最后一个字节的值剥离的字节数。