【发布时间】:2014-07-28 13:20:46
【问题描述】:
我正在尝试将 PKCS7 填充应用于我的 PHP 代码。我从这个要点派生了我的代码
https://gist.github.com/Halama/5956871
块大小预计为 16 字节。 数据为“密码”,长度为 8 个字节。 拿到pad后,会在要加密的数据末尾追加。
$blockSize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, $thisMCRYPT_MODE_CBCmode);
$pad = $blockSize - (strlen($data) % $blockSize);
$data = $data . str_repeat(chr($pad), $pad);
问题是存在(很多)数据无法解密的实例。
下面提供的是 base64 编码的示例数据。解码样本的前 16 个字节代表 IV
工作: cjg1RYWxlc8bDH2de43t0bv1ug36i8ayjWDQTela938=(焊盘长度:8)
不工作: 9wWI+MyYj5ZVj2sC4xr7EgOsgNSoeTZW1yM8ddmqg18=(焊盘长度: 122)
上面提到的pad长度是用这个来检索的
$pad = ord($data[strlen($data) - 1]);
我正在使用 mcrypt_enrypt 加密字符串“密码”。我用于 mcrypt 的密钥是
lgbsVE+qVO1P2ue0iCjrTPMU5hKX9aHE7r1aUUeqFag=
【问题讨论】:
标签: php encryption padding mcrypt pkcs#7