我知道在 Python 中你会做一些事情来检查 PKCS#7 填充的验证:
pad = ord(plaintext[-1]);
/* get the last N bytes of the plaintext */
all_padding = plaintext[-pad:];
for byte in all_padding:
assert byte == pad
在 PHP 中是否有使用 ECB/CBC 密文的工作示例?或者有谁知道如何实施更改以制作此 PHP?
我知道在 Python 中你会做一些事情来检查 PKCS#7 填充的验证:
pad = ord(plaintext[-1]);
/* get the last N bytes of the plaintext */
all_padding = plaintext[-pad:];
for byte in all_padding:
assert byte == pad
在 PHP 中是否有使用 ECB/CBC 密文的工作示例?或者有谁知道如何实施更改以制作此 PHP?
在对我对 python 的了解进行了一番摸索之后,我得出了这个结果,它似乎使用 CBC 加密对我来说是正确的:
$result = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypt, MCRYPT_MODE_CBC, $iv);
$padLength = ord($result[strlen($result)-1]);
$padBytes = substr($result, -1 * $padLength);
if (strlen($padBytes) != $padLength || count(array_count_values(str_split($padBytes))) != 1) {
throw new Exception('invalid padding!');
}
return $result;