使用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自动加载的两种实现方法
Jun 21 PHP
php中的静态变量的基本用法
Mar 20 PHP
php判断数组元素中是否存在某个字符串的方法
Jun 14 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
php使用google地图应用实例
Dec 31 PHP
ecshop后台编辑器替换成ueditor编辑器
Mar 03 PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
Jun 09 PHP
PHP中md5()函数的用法讲解
Mar 30 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
Apr 23 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
Oct 23 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
Aug 06 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批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
php str_getcsv把字符串解析为数组的实现方法
2017/04/05 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
jQuery 阴影插件代码分享
2012/01/09 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
python双向链表实现实例代码
2013/11/21 Python
Python Queue模块详解
2014/11/30 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
python 公共方法汇总解析
2019/09/16 Python
Python定时器线程池原理详解
2020/02/26 Python
Python容器类型公共方法总结
2020/08/19 Python
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
总裁秘书岗位职责
2013/12/04 职场文书
私人委托书格式
2014/09/10 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
2015中学教师个人工作总结
2015/07/22 职场文书
浪漫婚礼主持词开场白
2015/11/24 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
八年级作文之友情
2019/11/25 职场文书
JavaScript的Set数据结构详解
2022/02/18 Javascript