2014-11-24 24 views
0

我试过this code来自openssl wiki,它通过aes-256算法生成密文。 输入纯文本的长度是512字节。然而,输出的长度是不同的。 PHP生成一个长度为512字节的输出,而C生成一个长度为528字节的密文。为什么通过mcrypt_encrypt()生成的密文长度与通过openssl加密库生成的密文长度不同

为什么存在这样的差异,我如何使用aes-256算法来加密PHP中的文本,然后在C中解密它?

+0

删除了问题的最后部分,请求示例在这里明确地脱离主题。 – 2014-11-24 00:35:14

回答

1

你应该看例如mcrypt_encrypt的注释部分使用PKCS#7填充方法填充明文消息。 PHP使用零填充,直到块边界上的第一个值,而不是通常使用的特别PKCS#7填充方法。

零填充的问题在于,对于可能以00字节值结尾的消息而言,它是不确定的,因为这可能在unpadding期间被删除。

相关问题