您的位置:首页 > 其它

HMAC-SHA1各语言版本实现

2013-12-14 14:01 218 查看
在各大开放平台大行其道的互联网开发潮流中,调用各平台的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: