使用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调用Java对象的方法
Oct 09 PHP
php类
Nov 27 PHP
PHP 七大优势分析
Jun 23 PHP
PHP 上传文件的方法(类)
Jul 30 PHP
PHP5中使用DOM控制XML实现代码
May 07 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 PHP
浅析php原型模式
Nov 25 PHP
PHP中实现crontab代码分享
Mar 26 PHP
Apache服务器下防止图片盗链的办法
Jul 06 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP中__set()实例用法和基础讲解
Jul 23 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操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
2014/04/29 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
javascript 显示当前系统时间代码
2009/12/28 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
2015/03/26 Javascript
jQuery实现获取绑定自定义事件元素的方法
2015/12/02 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
详解如何实现一个简单的Node.js脚手架
2017/12/04 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
通过vue-cli3构建一个SSR应用程序的方法
2018/09/13 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
Python实现Const详解
2015/01/27 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
详解Django中六个常用的自定义装饰器
2018/07/04 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
Python如何省略括号方法详解
2020/03/21 Python
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
美国在线购物频道:Shop LC
2019/04/21 全球购物
邮政员工辞职信
2014/01/16 职场文书
运动会广播稿500字
2014/01/28 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang