使用HMAC-SHA1签名方法详解

yipeiwu_com5年前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;
    }

相关文章

提示Trying to clone an uncloneable object of class Imagic的解决

使用网上流传的一个程序实现pdf截图为png,需要使用Imagic扩展。在windows下安装完后提示: Fatal error: Trying to clone an unclonea...

PHP在线打包下载功能示例

PHP在线打包下载功能示例

本文实例讲述了PHP在线打包下载功能实现方法。分享给大家供大家参考,具体如下: 昨天晚上,为了弄这个打包下载的事,弄的事焦头烂额。有几个问题,第一个是开始PHP_ZIP.dll的问题。话...

PHP基于mssql扩展远程连接MSSQL的简单实现方法

本文实例讲述了PHP基于mssql扩展远程连接MSSQL的简单实现方法。分享给大家供大家参考,具体如下: 这里给出的是一个简单的示例,没有做安全考虑,自行处理吧: <?...

php中批量替换文件名的实现代码

代码如下 复制代码 代码如下: $dir = 'D:\Program Files\resource\application\Skin\PNG\\';//注意这里的路径,最后要加两个\,第...

PHP+JS实现批量删除数据功能示例

本文实例讲述了PHP+JS实现批量删除数据功能。分享给大家供大家参考,具体如下: 表单 <form id="form2" name="form2" method="post"...