使用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 相关文章推荐
利用static实现表格的颜色隔行显示
Oct 09 PHP
php初学者写及时补给skype用户充话费的小程序
Nov 02 PHP
php二分查找二种实现示例
Mar 12 PHP
php检测文件编码的方法示例
Apr 25 PHP
php用ini_get获取php.ini里变量值的方法
Mar 04 PHP
php建立Ftp连接的方法
Mar 07 PHP
php上传图片并压缩的实现方法
Dec 22 PHP
php处理带有中文URL的方法
Jul 11 PHP
Yii2框架实现注册和登录教程
Sep 30 PHP
[原创]PHP实现SQL语句格式化功能的方法
Jul 28 PHP
PHP实现防止表单重复提交功能【基于token验证】
May 24 PHP
浅谈laravel-admin的sortable和orderby使用问题
Oct 03 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生成略缩图代码
2012/07/16 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
2016/11/09 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python生成excel的实例代码
2017/11/08 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
python爬取代理ip的示例
2020/12/18 Python
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
2014年幼儿园元旦活动方案
2014/02/13 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
煤矿安全保证书
2015/02/27 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
2015七夕情人节宣传语
2015/07/14 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL