1

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

ECB/CBC 暗号文を使用した PHP の実用的な例はありますか? または、この PHP を作成するための変更を実装する方法を知っている人はいますか?

4

1 に答える 1

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;
于 2013-11-05T19:07:21.417 に答える