>백엔드 개발 >PHP 튜토리얼 >php中有点加密算法中str_repeat,str_pad 为何使用 chr返回ascii码

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

WBOY
WBOY원래의
2016-06-13 12:10:001345검색

php中有些加密算法中str_repeat,str_pad 为何使用 chr返回ascii码?
请看下面的加密算法:

function custom_hmac($algo, $data, $key, $raw_output = false)<br />{<br />$algo = strtolower($algo);<br />$pack = 'H'.strlen($algo('test'));<br />$size = 64;<br />$opad = str_repeat(chr(0x5C), $size);<br />$ipad = str_repeat(chr(0x36), $size);<br />//这样子的代码请详细解说一下<br />if (strlen($key) > $size) {<br />$key = str_pad(pack($pack, $algo($key)), $size, chr(0x00));<br />} else {<br />$key = str_pad($key, $size, chr(0x00));<br />}<br /><br />for ($i = 0; $i < strlen($key) - 1; $i++) {<br />$opad[$i] = $opad[$i] ^ $key[$i];<br />$ipad[$i] = $ipad[$i] ^ $key[$i];<br />}// 这个也不太明白<br /><br />$output = $algo($opad.pack($pack, $algo($ipad.$data)));<br /><br />return ($raw_output) ? pack($pack, $output) : $output;<br />}

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.