学堂 学堂 学堂公众号手机端

PHP中HMAC-SHA1加密算法如何实现的

lewis 1年前 (2024-04-06) 阅读数 6 #技术
今天就跟大家聊聊有关“PHP中HMAC-SHA1加密算法如何实现的”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“PHP中HMAC-SHA1加密算法如何实现的”文章能对大家有帮助。



HMAC-SHA1加密算法

function getSignature($str, $key) {
    $signature = "";
    if (function_exists('hash_hmac')) {
        $signature = base64_encode(hash_hmac("sha1", $str, $key, true));
    } else {
        $blocksize = 64;
        $hashfunc = 'sha1';
        if (strlen($key) > $blocksize) {
            $key = pack('H*', $hashfunc($key));
        }
        $key = str_pad($key, $blocksize, chr(0x00));
        $ipad = str_repeat(chr(0x36), $blocksize);
        $opad = str_repeat(chr(0x5c), $blocksize);
        $hmac = pack(
            'H*', $hashfunc(
                ($key ^ $opad) . pack(
                    'H*', $hashfunc(
                        ($key ^ $ipad) . $str
                    )
                )
            )
        );
        $signature = base64_encode($hmac);
    }
    return $signature;
}

php openssl(SHA1WithRSA) 签名 验签

签名:

public function wjSign($data){
    $key = openssl_pkey_get_private(file_get_contents($this->privateKeyPathWJ));
    openssl_sign($data, $sign, $key, OPENSSL_ALGO_SHA1);
    $sign = base64_encode($sign);
    return $sign;
}

验签:

public function wjVerify($data, $sign){
    $sign = base64_decode($sign);
    $key = openssl_pkey_get_public(file_get_contents($this->publicKeyPathWJ));
    $result = openssl_verify($data, $sign, $key, OPENSSL_ALGO_SHA1) === 1;
    return $result;
}


以上就是关于“PHP中HMAC-SHA1加密算法如何实现的”的介绍了,感谢各位的阅读,如果大家想要了解更多相关的内容,欢迎关注博信,小编每天都会为大家更新不同的知识。
版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门