当前位置: 代码迷 >> PHP >> php中有点加密算法中str_repeat,str_pad 为何使用 chr返回ascii码
  详细解决方案

php中有点加密算法中str_repeat,str_pad 为何使用 chr返回ascii码

热度:70   发布时间:2016-04-28 18:15:43.0
php中有些加密算法中str_repeat,str_pad 为何使用 chr返回ascii码?
请看下面的加密算法:
function custom_hmac($algo, $data, $key, $raw_output = false)
{
$algo = strtolower($algo);
$pack = 'H'.strlen($algo('test'));
$size = 64;
$opad = str_repeat(chr(0x5C), $size);
$ipad = str_repeat(chr(0x36), $size);
//这样子的代码请详细解说一下
if (strlen($key) > $size) {
$key = str_pad(pack($pack, $algo($key)), $size, chr(0x00));
} else {
$key = str_pad($key, $size, chr(0x00));
}

for ($i = 0; $i < strlen($key) - 1; $i++) {
$opad[$i] = $opad[$i] ^ $key[$i];
$ipad[$i] = $ipad[$i] ^ $key[$i];
}// 这个也不太明白

$output = $algo($opad.pack($pack, $algo($ipad.$data)));

return ($raw_output) ? pack($pack, $output) : $output;
}

------解决思路----------------------
str_pad 用指定字符充填串到指定长度
在这里就是 $size 了
长度一样了,下面的循环中就不需要判断元素是否存在了
  相关解决方案