使用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网页木马一枚 附PHP木马的防范方法
Oct 09 PHP
php 多关键字 高亮显示实现代码
Apr 23 PHP
PHP+jQuery实现自动补全功能源码
May 15 PHP
如何使用PHP实现javascript的escape和unescape函数
Jun 29 PHP
php中chdir()函数用法实例
Nov 13 PHP
php实现将字符串按照指定距离进行分割的方法
Mar 14 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
Apr 01 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
Oct 24 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 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
加强版phplib的DB类
2008/03/31 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
Ext 表单布局实例代码
2009/04/30 Javascript
jQuery 获取URL参数的插件
2010/03/04 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
2015/12/08 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
Sanic框架安装与简单入门示例
2018/07/16 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
Python自动化操作实现图例绘制
2020/07/09 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
高一化学教学反思
2014/02/05 职场文书
暑期研修感言
2014/02/17 职场文书
艺术教育实施方案
2014/05/03 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
2015最新婚礼主持词
2015/06/30 职场文书