HMAC-SHA1各语言版本实现
2013-12-14 14:01
225 查看
在各大开放平台大行其道的互联网开发潮流中,调用各平台的API接口过程中,无一例外都会用到计算签名值(sig值)。而在各种计算签名的方法中,经常被采用的就是HMAC-SHA1,现对HMAC-SHA1做一个简单的介绍:
HMAC,散列消息鉴别码,基于密钥的Hash算法认证协议。实现原理为:利用已经公开的Hash函数和私有的密钥,来生成固定长度的消息鉴别码;
SHA1、MD5等Hash算法是比较常用的不可逆Hash签名计算方法;
BASE64,将任意序列的8字节字符转换为人眼无法直接识别的符号编码的一种方法;
各个语言版本的实现为:
Python版:
import hmac
import hashlib
import base64
hmac.new(Token,data,hashlib.sha1).digest().encode('base64').rstrip()
PHP版:
base64_encode(hash_hmac("SHA1",clientStr,Token , true))
C++版(Openssl):
HMAC( EVP_sha1(),
/*key data*/ strKey.data(),
/*key len*/ strKey.size(),
/*data */(unsigned char*) strRandom.data(),
/*data len*/ strRandom.size(), digest, &digest_len))
Shell版:
echo -n '3f88a95c532bea70' | openssl dgst -hmac '123' -sha1 -binary | base64
HMAC,散列消息鉴别码,基于密钥的Hash算法认证协议。实现原理为:利用已经公开的Hash函数和私有的密钥,来生成固定长度的消息鉴别码;
SHA1、MD5等Hash算法是比较常用的不可逆Hash签名计算方法;
BASE64,将任意序列的8字节字符转换为人眼无法直接识别的符号编码的一种方法;
各个语言版本的实现为:
Python版:
import hmac
import hashlib
import base64
hmac.new(Token,data,hashlib.sha1).digest().encode('base64').rstrip()
PHP版:
base64_encode(hash_hmac("SHA1",clientStr,Token , true))
C++版(Openssl):
HMAC( EVP_sha1(),
/*key data*/ strKey.data(),
/*key len*/ strKey.size(),
/*data */(unsigned char*) strRandom.data(),
/*data len*/ strRandom.size(), digest, &digest_len))
Shell版:
echo -n '3f88a95c532bea70' | openssl dgst -hmac '123' -sha1 -binary | base64
相关文章推荐
- HMAC-SHA1各语言版本实现
- 用shell脚本语言实现一个斐波那契数列的递归和非递归版本
- C 语言堆栈的实现,数组版本,链表版本(大师级的代码值得细细品味。)
- Google Protocol Buffer 的各语言实现版本
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现
- [绍棠_Swift] Swift4.0如何实现字符串的HMAC_SHA1加密
- 游戏实现多语言版本(国际化)
- [转]几种不同语言版本的HMM实现
- HMAC-SHA1 BASE64编码 java源代码实现
- 多语言网站(如何实现网站的多语言版本?)
- C# 完美实现多语言版本Windows应用程序
- .NET中多语言版本的实现---WebForm
- 一步一步实现网站的多语言版本
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现 的另一种方式
- nginx tomcat集群配置实现无痛重启服务教程python语言版本
- RDIFramework.NET V2.9版本多语言的实现
- 几种不同语言版本的HMM实现
- C#完美实现多语言版本Windows应用程序
- 多语言网站(如何实现网站的多语言版本?)
- JavaScript 的多语言版本实现