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