PHP中对hmac_sha1签名算法的实现方法
最近研究网宿云文档API,其中用到了一种叫hmac_sha1的签名算法;
HMAC-SHA1:
HMAC是哈希运算消息认证码 (Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。HMAC-SHA1签名算法是一种常用的签名算法,用于对一段信息进行生成签名摘要。
PHP代码实现:
/*** 获取hmac_sha1签名的值* @link 代码来自: http://www.educity.cn/develop/406138.html** @param $str 源串* @param $key 密钥** @return 签名值*/function hmac_sha1($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;} }
注:自PHP5.1.2起就已经内置了hash_hmac函数,所以可不必做function_exsits的判断,一行代码便可获取hmac_sha1签名值:
$signature = base64_encode(hash_hmac("sha1", $str, $key, true));
转载于:https://www.cnblogs.com/AllenChou/p/7651306.html
PHP中对hmac_sha1签名算法的实现方法相关推荐
- shell中十种实现自加的方法
shell中十种实现自加的方法 let "n = $n + 1" : $((n = $n + 1)) ((n = n+1)) n=$(($n + 1)) : $[ n = $n + ...
- Unity3D 中 2D_Toolkit插件下载 和 导入方法
Unity3D 中 2D_Toolkit插件下载 和 导入方法 1.你把下载来的包放到 安装目录:Editor\Standard Packages里面. 2.然后按ctrl+9,进入asset sto ...
- python创建类的实例方法-Python中动态创建类实例的方法
简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模 ...
- 在JavaScript中重复字符串的三种方法
In this article, I'll explain how to solve freeCodeCamp's "Repeat a string repeat a string" ...
- jQuery中鲜为人知的的几个方法
转来学习一下 jQuery中鲜为人知的的几个方法 jQuery近些年来仍旧是web开发中最受欢迎的类库,虽然大家褒贬不一,但是仍旧不失为一款最流行的Javascript,在今天这篇文章中,我们将介绍几 ...
- python隐藏部分代码_python隐藏类中属性的3种实现方法
方法一: 效果图一: 代码一: # 定义一个矩形的类 class Rectangle: # 定义初始化方法 def __init__(self,width,height): self.hidden_w ...
- 【lombok】使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法...
错误如题:使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法 报错如下: 解决方法: 1.首先查看你的lombok插件是否下载安 ...
- shell中的函数及脚本调试方法
1.函数格式 目的:将一些相对对立的代码变成函数,提供可读性和重用性,避免重复编写相同代码. 函数格式: 函数关键字:function可以省略,可不带任何参数; 符号{表示函数体的开始(可在函数名后单 ...
- php如何查询数据是否存在,PHP判断数据库中的记录是否存在的方法,php数据库_PHP教程...
PHP判断数据库中的记录是否存在的方法,php数据库 本文实例讲述了PHP判断数据库中的记录是否存在的方法.分享给大家供大家参考. 具体实现代码如下: 复制代码 代码如下: $sql="se ...
最新文章
- 蓝牙Bluetooth技术小知识
- Rose与PowerDesigner:两款建模工具对比分析比较[转]
- 【TypeError: float() argument must be a string or a number, not ‘map’】
- 【做题记录】P4211 [LNOI2014]LCA
- sql limit子句_SQL子句解释的位置:之间,之间,类似和其他示例
- apache配置ssl证书
- python安装opencv whl_Python 3.x 安装opencv+opencv_contrib的操作方法
- android 异步加载图片缩略图
- 两个组件对不齐(css样式问题)
- 【SQL】SQL的基础语法
- 谷歌浏览器不支持html2.0,谷歌浏览器不能播放视频怎么办_chrome浏览器无法播放视频的解决方法-系统城...
- iSlide(PPT增强插件)官方正式版V5.6.1 | islide插件下载ppt插件在哪里下载?
- 制作卡通人物的3种简单方法
- 芋头哥:从码农到农民,靠微博3个月卖出20万斤
- oracle 锁表是为什么,怎么解决
- meo学习笔记5:C++中的类型转换概述
- MIT6_0002F16_ProblemSet4
- C语言全局变量那些事儿
- 接口测试-使用Postman发送请求
- 图片打不开怎么转换格式?怎么修改图片的格式?
热门文章
- unity怎么制作云飘动_Unity 如何制作星空粒子效果?
- jquery点击事件传值加载页面_jQuery添加options点击事件并传值
- 【Pytorch神经网络理论篇】 19 循环神经网络训练语言模型:语言模型概述+NLP多项式概述
- 智慧交通day04-特定目标车辆追踪01:总览概述
- Java 数组及多维数组
- 天池 在线编程 数组游戏
- LeetCode 846. 一手顺子(map)
- 程序员面试金典 - 面试题 17.15. 最长单词(排序+递归)
- LeetCode 334. 递增的三元子序列
- POJ 2287 田忌赛马(贪心)