使用HMAC-SHA1签名方法详解

yipeiwu_com6年前PHP代码库
加密算法:
使用HMAC-SHA1签名方法
复制代码 代码如下:

    /**
     * @brief 使用HMAC-SHA1算法生成oauth_signature签名值
     *
     * @param $key  密钥
     * @param $str  源串
     *
     * @return 签名值
     */
    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简单实现记录网站访问量功能示例

PHP简单实现记录网站访问量功能示例

本文实例讲述了PHP简单实现记录网站访问量功能。分享给大家供大家参考,具体如下: tongji/index.php文件: $file = dirname(__FILE__).'/to...

php常用字符串处理函数实例分析

本文实例讲述了php常用字符串处理函数。分享给大家供大家参考。具体分析如下: 这里只提供几个简单常用的函数: chop执行去除空格处理,get_html_translation_tabl...

PHP/ThinkPHP实现批量打包下载文件的方法示例

前言 本文主要给大家介绍的是关于PHP/ThinkPHP实现批量打包下载文件的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍: 需求描述: 有数个文件,包含图片,文档...

PHP中串行化用法示例

本文实例讲述了PHP中串行化用法。分享给大家供大家参考,具体如下: 功能:串行化用于对对象的存储或者传输,通过反串行化得到这个对象。 1. Person.class.php: <...

php socket实现的聊天室代码分享

/** * patServer * PHP socket server base class * Events that can be handled: * * onStart *...