Closed leeboo closed 1 year ago
hmac,是一个独立的算法, hmac-sm3, 相当于 hmac(sm3(str)) , 这里的sm3可以替换为任意的hash算法,如sha1, sha256, md5都可以, 具体如下
function myhash( $data,$digest_algo, $binary=false){
// 这时可以是任何的hash算法,也包括了 sm3
return openssl_digest($data, $digest_algo,$binary);
}
function hmac($key, $data, $algorithm = 'sha256')
{
$blockSize = 64;
if (strlen($key) > $blockSize) {
die("please check key len");
}
$key = str_pad($key, $blockSize, chr(0x00));
$innerPad = str_repeat(chr(0x36), $blockSize);
$outerPad = str_repeat(chr(0x5C), $blockSize);
$innerKey = $key ^ $innerPad;
$inner = $innerKey . $data;
$hash = myhash( $inner,$algorithm, true);
$outerKey = $key ^ $outerPad;
$outer = $outerKey . $hash;
$hmac = myhash( $outer,$algorithm);
return $hmac;
}
『hmac-sm3,这个算法与hmac-sha256在hmac的算法是一样的,只是hash的算法不一样,一个是sm3,一个sha256, 没有什么特殊的注意的地方』
这个不是很明白,具体怎么做呢