在PHP中你如何验证PKCS#7填充?

时间:2013-11-05 17:07:20

标签: php encryption

我知道在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?

1 个答案:

答案 0 :(得分:1)

在对我对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;