使用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
深入apache配置文件httpd.conf的部分参数说明
Jun 28 PHP
在PHP中运行Linux命令并启动SSH服务的例子
Jun 12 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
Mar 07 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
php is_writable判断文件是否可写实例代码
Oct 13 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 15 PHP
PHP CURL使用详解
Mar 21 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
Nov 04 PHP
php实现商城购物车的思路和源码分析
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
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
使用js实现数据格式化
2014/12/03 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
详解webpack分离css单独打包
2017/06/21 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
通过Pandas读取大文件的实例
2018/06/07 Python
python实现在线翻译
2020/06/18 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
职业生涯规划书的格式
2013/12/29 职场文书
房地产项目建议书
2014/03/12 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
企业办公室主任岗位职责
2015/04/01 职场文书