使用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 相关文章推荐
最令PHP初学者头痛的十四个问题
Jul 12 PHP
将一维或多维的数组连接成一个字符串的php代码
Aug 08 PHP
php学习之简单计算器实现代码
Jun 09 PHP
删除html标签得到纯文本可处理嵌套的标签
Apr 28 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
Sep 06 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
Sep 22 PHP
PHP如何使用Memcached
Apr 05 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 PHP
iOS+PHP注册登录系统 PHP部分(上)
Dec 26 PHP
PHP面向对象程序设计之对象的遍历操作示例
Jun 12 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 PHP
php+ajax实现文件切割上传功能示例
Mar 03 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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
PHP产生随机字符串函数
2006/12/06 PHP
dedecms函数分享之获取某一栏目所有子栏目
2014/05/19 PHP
PHP如何实现跨域
2016/05/30 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
laravel学习教程之存取器
2016/07/30 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
2016/11/12 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
jquery实现侧边栏左右伸缩效果的示例
2017/12/19 jQuery
jquery写出PC端轮播图实例
2018/01/26 jQuery
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
[01:07:57]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第二场 1月19日
2021/03/11 DOTA
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
使用TensorFlow实现SVM
2018/09/06 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
python字符串查找函数的用法详解
2019/07/08 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
大学生入党自我鉴定
2013/10/31 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
出国留学自荐信模板
2015/03/06 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL