我从openssl wiki尝试了这段代码,它通过aes-256算法生成密码文本。输入纯文本的长度为 512 字节。然而,输出的长度是不同的。PHP 生成长度为 512 字节的输出,而 C 生成 528 字节长的密文。
为什么存在这样的差异,我如何使用 aes-256 算法在 PHP 中加密文本,然后在 C 中解密它?
您应该查找例如mcrypt_encrypt
的评论部分,以使用 PKCS#7 填充方法填充纯文本消息。PHP 使用零填充到块边界上的第一个值,而不是通常使用的临时 PKCS#7 填充方法。
零填充的问题在于,对于可能以 00
字节值结尾的消息,它不是确定性的,因为在取消填充期间可能会删除该值。