博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

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=
posted @   八月情  阅读(346)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
点击右上角即可分享
微信分享提示