使用HMAC-SHA1签名方法详解


Posted in PHP onJune 26, 2013

加密算法:
使用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 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
Oct 09 PHP
一个自定义位数的php多用户计数器代码
Mar 11 PHP
Dedecms V3.1 生成HTML速度的优化办法
Mar 18 PHP
PHP EOT定界符的使用详解
Sep 30 PHP
php include加载文件两种方式效率比较
Aug 08 PHP
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
php切割页面div内容的实现代码分享
Jul 31 PHP
更改localhost为其他名字的方法
Feb 10 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
php读取文件内容的几种方法详解
Jun 26 #PHP
深入file_get_contents与curl函数的详解
Jun 25 #PHP
解析如何去掉CodeIgniter URL中的index.php
Jun 25 #PHP
解析php入库和出库
Jun 25 #PHP
解析php下载远程图片函数 可伪造来路
Jun 25 #PHP
解析php通过cookies获取远程网页的指定代码
Jun 25 #PHP
使用dump函数,给php加断点测试
Jun 25 #PHP
You might like
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
php获得url参数中具有&的值的方法
2014/03/05 PHP
php+ajax制作无刷新留言板
2015/10/27 PHP
浅谈javascript 面向对象编程
2009/10/28 Javascript
使用JavaScript switch case 另类写法
2010/03/14 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
详解Bootstrap插件
2016/04/25 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
简单介绍Python中的JSON模块
2015/04/08 Python
python实现飞机大战
2018/09/11 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
视光学专业毕业生推荐信
2013/10/28 职场文书
美术毕业生求职信
2014/02/25 职场文书
我爱我校演讲稿
2014/05/21 职场文书
标准毕业生自荐信
2014/06/24 职场文书
超市食品安全承诺书
2015/04/29 职场文书
JavaScript分页组件使用方法详解
2021/07/26 Javascript
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android