编程语言
首页 > 编程语言> > php 进行 hamc sha1 加密

php 进行 hamc sha1 加密

作者:互联网

实现方法

   /**
    * @使用HMAC-SHA1算法生成oauth_signature签名值
    *
    * @param $key  密钥
    * @param $str  源串
    *
    * @return 签名值
    */

   function get_signature($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;
   }

调用

$this->get_signature('GET@/api/v1/user/@a=b&c=d@1569564388','50BE03427C039AD53391586BF9D7A907');

// ctbXiklm0xqkv42xYgrtRvFPmwQ=

标签:sha1,str,blocksize,hamc,key,signature,hashfunc,php,hmac
来源: https://www.cnblogs.com/ForAll-I-Care/p/16450791.html