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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对10亿个数据去重java_20 亿个数字在 4G 内存中如何去重排序:快来试一试 BitMap...

有一道流传广泛的面试题:给你一台 4G 内存的机器,一组 20 亿个无序正整数,如何快速地判断一个正整数 N 是否在这组数字中?或者如何快速地对这组数据排重后排序?让我们先算算 20 亿个整数会占用多大的内存空间&#xff…

大佬共话AI:“三马二宏”等亮相2020年世界人工智能大会

(视频来源:腾讯视频新民晚报)来源 | 数据观综合(转载请注明来源)编辑 | 蒲蒲7月9日上午,2020世界人工智能大会云端峰会(WAIC)在上海正式开幕,人工智能概念又一次被行业点燃。大会上,…

浅谈Spring的AOP实现-代理机制

说起Spring的AOP(Aspect-Oriented Programming)面向切面编程大家都很熟悉(Spring不是这次博文的重点),但是我先提出几个问题,看看同学们是否了解,如果了解的话可以不用继续往下读: 1. Spring的AOP的实现方式…

java读图片显示到前端_java从前端获取参数添加到图片后返回整张图片

java从前端获取参数添加到图片后返回整张图片以后为整个servlet代码,请自行加入到j2ee工程。import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.RenderingHints;import java.awt.image.BufferedIma…

java远程调试挂起线程_java进程的远程调试

一、jdb调试mqbroker(jvm参数配置)2.利用jdb/idea/eclipse 远程调试,同本地调试一样二、jvisualvm jvm 监视使用jstatd连接nohup $JAVA_HOME/bin/jstatd -p 1099 -J-Djava.security.policy使用jmx连接(需配置jvm启动参数据)由于jvisualvm采器需要使用jmx&#xff0c…

简单图形打印(需求分解)

打印任意高度的实心菱形 菱形的打印是一个相对复杂的需求,我们需要把它分解成为多个简单的需求来完成。 将它看作是两个部分,上面一个三角形,下面一个倒三角形。 再依次实现打印。 代码如下: //打印任意高度的菱形 public class G…

机器人研究员的崛起 |《自然》论文

来源:Nature自然科研根据本周《自然》发表的一篇论文A mobile robotic chemist,汽车装配线上常见的机器人经过改造后,可以在化学实验室内和人类一起工作。该机器人和机器学习算法相连,能够在给定需要检验什么假设的情况下&#xf…

python 求最大值实例_Python 求数组局部最大值的实例

求数组局部最大值给定一个无重复元素的数组A[0…N-1],求找到一个该数组的局部最大值。规定:在数组边界外的值无穷小。即:A[0]>A[-1],A[N-1] >A[N]。显然,遍历一遍可以找到全局最大值&#xff0c…

Python+selenium第一个自动化脚本

第一个自动化脚本(用Python写的) from selenium import webdriver #从selenium导入webdriber driverwebdriber.Firefox() #打开Firefox软件 driver.get("http://baidu.com") #在Firefox的URL里输入百度,打开百度页面 driver.f…

《EE Times》评出2020年全球最值得关注的18家传感器公司

来源:仪商网每年,美国著名电子技术类杂志《EE Times》都会评选出全球值得关注的新创半导体公司排行榜。今年已轮到了第20届,相较以往,最大的变化是这一届的榜单由60家增至100家。在今年的榜单中,保留了上一届中的49家公…

webstorm配置Monokai-Sublime.jar主题

https://github.com/OtaK/jetbrains-monokai-sublime 导入下载的Monokai-Sublime.jar jar包即可使用。 转载于:https://www.cnblogs.com/sirwang/p/7657975.html

用洪小文,人工智能予力永续未来

来源: 微软研究院AI头条 二十一世纪第三个十年的开局时刻有些艰难。当许多人还在为澳大利亚森林大火和席卷东非、西亚的蝗虫灾害而担忧时,一场突如其来的疫情又在全球各国次第爆发,迄今仍未有止息迹象。事实上,被疫情困扰的不仅是…

python 通信模块_python 多进程通信模块

多进程通信方法好多,不一而数。刚才试python封装好嘅多进程通信模块 multiprocessing.connection。简单测试一下,效率还可以,应该系对socket封装,效率可以达到4krps,可以满足好多方面嘅需求啦。附代码如下:client#!/us…

关于h5中背景音乐的自动播放

音乐的自动播放属性&#xff0c;这里也介绍一下&#xff1a; <audio controls"controls" autoplay"autoplay"><source src"song.ogg" type"audio/ogg" /><source src"song.mp3" type"audio/mpeg" …

腾讯发布2020人工智能白皮书:泛在智能

来源&#xff1a;腾讯研究院7月10日&#xff0c;在世界人工智能大会腾讯论坛上&#xff0c;腾讯集团副总裁、腾讯研究院院长司晓正式发布了《腾讯人工智能白皮书&#xff1a;泛在智能》&#xff08;以下简称白皮书&#xff09;。作为腾讯第一份全面介绍AI、阐述腾讯人工智能布局…

相学java_从这两套题,重新认识JS的this、作用域、闭包、对象

日常开发中&#xff0c;我们经常用到this。例如用Jquery绑定事件时&#xff0c;this指向触发事件的DOM元素&#xff1b;编写Vue、React组件时&#xff0c;this指向组件本身。对于新手来说&#xff0c;常会用一种意会的感觉去判断this的指向。以至于当遇到复杂的函数调用时&…

洛谷1373 小a和uim之大逃离

https://www.luogu.org/problem/show?pid1373 题目背景 小a和uim来到雨林中探险。突然一阵北风吹来&#xff0c;一片乌云从北部天边急涌过来&#xff0c;还伴着一道道闪电&#xff0c;一阵阵雷声。刹那间&#xff0c;狂风大作&#xff0c;乌云布满了天空&#xff0c;紧接着豆大…

java 日期处理工具类_Java日期处理工具类DateUtils详解

本文实例为大家分享了Java日期处理工具类DateUtils的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下import java.sql.Timestamp;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/*** */public…

Ipython知识点总结

初识Python&#xff1a; Python是一种面向对象、直译式计算机程序语言。也是一种功能强大而完善的通用型语言&#xff0c;已经具有十多年的发展历史&#xff0c;成熟且稳定。Python 具有脚本语言中最丰富和强大的类库&#xff0c;足以支持绝大多数日常应用。 Python语法简捷而清…