使用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中foreach语句控制数组循环的用法

foreach是PHP中很常用的一个用作数组循环的控制语句。 因为它的方便和易用,自然也就在后端隐藏着很复杂的具体实现方式(对用户透明) 今天,我们就来一起分析分析,foreach是如何...

php绘制圆形的方法

本文实例讲述了php绘制圆形的方法。分享给大家供大家参考。具体实现方法如下: php绘图的基本步骤,有四步(php.ini里的 extension = php_gb2.dll 组件首先需...

PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台

复制代码 代码如下: //取得指定文件夹的目录名称 function get_dir_name($dir_path,$file) { $dirpath = $dir_path; $dir...

php中eval函数的危害与正确禁用方法

php的eval函数并不是系统组件函数,因此我们在php.ini中使用disable_functions是无法禁止它的。 但是eval()对于php安全来说具有很大的杀伤力,因此一般不用...

探讨各种PHP字符串函数的总结分析

PHP字符串函数包括查找字符位置函数;提取子字符函数;替换字符串;字符长度;比较字符函数;分割成数组字符;去除空格等等。 PHP语言中的字符串函数也是一个比较易懂的知识。今天我们就为大...