最近研究网宿云文档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签名算法的实现方法相关推荐

  1. shell中十种实现自加的方法

    shell中十种实现自加的方法 let "n = $n + 1" : $((n = $n + 1)) ((n = n+1)) n=$(($n + 1)) : $[ n = $n + ...

  2. Unity3D 中 2D_Toolkit插件下载 和 导入方法

    Unity3D 中 2D_Toolkit插件下载 和 导入方法 1.你把下载来的包放到 安装目录:Editor\Standard Packages里面. 2.然后按ctrl+9,进入asset sto ...

  3. python创建类的实例方法-Python中动态创建类实例的方法

    简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模 ...

  4. 在JavaScript中重复字符串的三种方法

    In this article, I'll explain how to solve freeCodeCamp's "Repeat a string repeat a string" ...

  5. jQuery中鲜为人知的的几个方法

    转来学习一下 jQuery中鲜为人知的的几个方法 jQuery近些年来仍旧是web开发中最受欢迎的类库,虽然大家褒贬不一,但是仍旧不失为一款最流行的Javascript,在今天这篇文章中,我们将介绍几 ...

  6. python隐藏部分代码_python隐藏类中属性的3种实现方法

    方法一: 效果图一: 代码一: # 定义一个矩形的类 class Rectangle: # 定义初始化方法 def __init__(self,width,height): self.hidden_w ...

  7. 【lombok】使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法...

    错误如题:使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法 报错如下: 解决方法: 1.首先查看你的lombok插件是否下载安 ...

  8. shell中的函数及脚本调试方法

    1.函数格式 目的:将一些相对对立的代码变成函数,提供可读性和重用性,避免重复编写相同代码. 函数格式: 函数关键字:function可以省略,可不带任何参数; 符号{表示函数体的开始(可在函数名后单 ...

  9. php如何查询数据是否存在,PHP判断数据库中的记录是否存在的方法,php数据库_PHP教程...

    PHP判断数据库中的记录是否存在的方法,php数据库 本文实例讲述了PHP判断数据库中的记录是否存在的方法.分享给大家供大家参考. 具体实现代码如下: 复制代码 代码如下: $sql="se ...

最新文章

  1. 蓝牙Bluetooth技术小知识
  2. Rose与PowerDesigner:两款建模工具对比分析比较[转]
  3. 【TypeError: float() argument must be a string or a number, not ‘map’】
  4. 【做题记录】P4211 [LNOI2014]LCA
  5. sql limit子句_SQL子句解释的位置:之间,之间,类似和其他示例
  6. apache配置ssl证书
  7. python安装opencv whl_Python 3.x 安装opencv+opencv_contrib的操作方法
  8. android 异步加载图片缩略图
  9. 两个组件对不齐(css样式问题)
  10. 【SQL】SQL的基础语法
  11. 谷歌浏览器不支持html2.0,谷歌浏览器不能播放视频怎么办_chrome浏览器无法播放视频的解决方法-系统城...
  12. iSlide(PPT增强插件)官方正式版V5.6.1 | islide插件下载ppt插件在哪里下载?
  13. 制作卡通人物的3种简单方法
  14. 芋头哥:从码农到农民,靠微博3个月卖出20万斤
  15. oracle 锁表是为什么,怎么解决
  16. meo学习笔记5:C++中的类型转换概述
  17. MIT6_0002F16_ProblemSet4
  18. C语言全局变量那些事儿
  19. 接口测试-使用Postman发送请求
  20. 图片打不开怎么转换格式?怎么修改图片的格式?

热门文章

  1. unity怎么制作云飘动_Unity 如何制作星空粒子效果?
  2. jquery点击事件传值加载页面_jQuery添加options点击事件并传值
  3. 【Pytorch神经网络理论篇】 19 循环神经网络训练语言模型:语言模型概述+NLP多项式概述
  4. 智慧交通day04-特定目标车辆追踪01:总览概述
  5. Java 数组及多维数组
  6. 天池 在线编程 数组游戏
  7. LeetCode 846. 一手顺子(map)
  8. 程序员面试金典 - 面试题 17.15. 最长单词(排序+递归)
  9. LeetCode 334. 递增的三元子序列
  10. POJ 2287 田忌赛马(贪心)