当前位置:Gxlcms > PHP教程 > php中有点加密算法中str_repeat,str_pad为何使用chr返回ascii码

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

时间:2021-07-01 10:21:17 帮助过:4人阅读

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 了
长度一样了,下面的循环中就不需要判断元素是否存在了

人气教程排行