使用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 相关文章推荐
一个程序下载的管理程序(一)
Oct 09 PHP
ob_start(),ob_start('ob_gzhandler')使用
Dec 25 PHP
MySQL授权问题总结
May 06 PHP
php.ini 配置文件的深入解析
Jun 17 PHP
php实现过滤表单提交中html标签的方法
Oct 17 PHP
Yii框架中memcache用法实例
Dec 03 PHP
双冒号 ::在PHP中的使用情况
Nov 05 PHP
Yii2前后台分离及migrate使用(七)
May 04 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
Jun 04 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 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
层叠菜单的动态生成
2006/10/09 PHP
php 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
PHP关联链接常用代码
2012/11/05 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
JavaScript 继承详解 第一篇
2009/08/30 Javascript
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
通过javascript设置css属性的代码
2009/12/28 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
Python中的__SLOTS__属性使用示例
2015/02/18 Python
python实现比较文件内容异同
2018/06/22 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
Django集成搜索引擎Elasticserach的方法示例
2019/06/04 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
浅析Python 条件控制语句
2020/07/15 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
简述数组与指针的区别
2014/01/02 面试题
思想政治自我鉴定
2013/10/06 职场文书
心得体会怎么写
2013/12/30 职场文书
安全生产目标责任书
2014/04/14 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
专题组织生活会方案
2014/06/15 职场文书
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android