使用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概述.
Oct 09 PHP
PHP5新特性: 更加面向对象化的PHP
Nov 18 PHP
php面向对象全攻略 (五) 封装性
Sep 30 PHP
php阻止页面后退的方法分享
Feb 17 PHP
php+mysql数据库查询实例
Jan 21 PHP
php+xml实现在线英文词典查询的方法
Jan 23 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
Apr 04 PHP
CodeIgniter连贯操作的底层原理分析
May 17 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
Oct 08 PHP
php技巧小结【推荐】
Jan 19 PHP
php实现构建排除当前元素的乘积数组方法
Oct 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
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
js类 from qq
2006/11/13 Javascript
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
自写的一个jQuery圆角插件
2010/10/26 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
javascript中定义类的方法汇总
2014/12/28 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
详解JavaScript的变量和数据类型
2015/11/27 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
微信小程序模拟cookie的实现
2018/06/20 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
python 字典操作提取key,value的方法
2019/06/26 Python
django迁移文件migrations的实现
2020/03/31 Python
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
经济系大学生求职信
2013/10/01 职场文书
策划主管的工作职责
2013/11/24 职场文书
客户表扬信范文
2014/01/10 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
2014春晚主持词
2014/03/25 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
企业精神口号
2014/06/11 职场文书
电子商务求职信
2014/06/15 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang
nginx请求限制配置方法
2021/07/09 Servers