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=

原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/272241.html

(0)
上一篇 2022年7月9日
下一篇 2022年7月9日

相关推荐

发表回复

登录后才能评论