假设应用密钥为“appSecret”,签名参数列表“foo=1,bar=2,baz=3”,拼接排序后为“bar=2&baz=3&foo=1”,那么,sign的值为BASE64(HMAC-SHA1(“bar=2&baz=3&foo=1","appSecret”))。—nodejs里面怎么实现HMAC-SHA1啊?var sign=crypto.createHmac('sha1’, app_secret).update(args).digest(“base64”);用这样也不行呢,不知道你是怎么解决的?求回复(在做电信开放平台的短信验证码下发。)
3 回复
var args="app_id=123&access_token=abc";
var app_secret="123456";
var sign=crypto.createHmac('sha1', app_secret).update(args).digest().toString('base64');
console.log(sign);
nodejs加密后的结果是:n8NDFgg7tMpfojJwUp2Hs+Td9yQ=
可是电信提供的是: 中国电信天翼开放平台客服 11:07:10 1.sign_before =“app_id=123&access_token=abc”
这是即将要编码的字符串
2.b=HmacSHA1(sign_before, app_secret);
第一步:先把字符串用HmacSHA1方式进行编码. 假如app_secret的值设为:”123456”,经过编码后得出的值为:”[B@bfea1d”
3.sign_after=BASE64(b)
第二步:把第一步里得到的值进行BAsE64编码:sign_after=BASE64(”[B@bfea1d”) 最后获取得到的值为:”C4Fdpr8vZiRKGR1OlI7CcUmxHMg=”