使用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 相关文章推荐
从康盛产品(discuz)提取出来的模板类
Jun 28 PHP
如何在symfony中导出为CSV文件中的数据
Oct 06 PHP
php中DOMElement操作xml文档实例演示
Mar 26 PHP
关于php内存不够用的快速解决方法
Oct 26 PHP
php使用正则过滤js脚本代码实例
May 10 PHP
php实现上传图片保存到数据库的方法
Feb 11 PHP
php中动态变量用法实例
Jun 10 PHP
PHP下载远程图片的几种方法总结
Apr 07 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
Mar 07 PHP
PHP加MySQL消息队列深入理解
Feb 27 PHP
PHP7 list() 函数修改
Mar 09 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 异常处理实现代码
2009/03/10 PHP
理解PHP中的stdClass类
2014/04/18 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
2016/11/24 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
python对url格式解析的方法
2015/05/13 Python
回调函数的意义以及python实现实例
2017/06/20 Python
关于python下cv.waitKey无响应的原因及解决方法
2019/01/10 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
蹦床仓库:Trampoline Warehouse
2018/12/06 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
中英文自我评价语句
2013/12/20 职场文书
文明教师事迹材料
2014/01/16 职场文书
银行工作检查书范文
2014/01/31 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
期末复习计划
2015/01/19 职场文书
委托公证书格式
2015/01/26 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
Feign调用传输文件异常的解决
2021/06/24 Java/Android
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS