关于腾讯云短信接口的sig字段,sha256加密问题,nodejs
发布网友
发布时间:2022-04-23 01:17
我来回答
共3个回答
热心网友
时间:2022-05-16 07:26
按照我下面的写法哈:
const crypto = require('crypto');
function sig()
{
var strMobile = "这里是我的手机"; //tel的mobile字段的内容
var strAppKey = "这里是我的key"; //sdkappid对应的appkey,需要业务方高度保密
var strRand = "7226249334"; //url中的random字段的值
var strTime = "1457336869"; //unix时间戳
var buf = "appkey="+strAppKey+"&random="+strRand+"&time="
+strTime+"&mobile="+strMobile;
var sig = crypto.createHash('sha256').update(buf, 'utf-8').digest('hex');
return sig;
}
console.log(sig());
输出结果如下:
7b1e97051886abdbd66c684530db2ba014f828f31e06d624d88aff5469faa0
原因就是文档里面强调了编码要使用 utf-8,而 js 默认编码不是这个,所以需要强制指定下。
另外这个 sig 的计算结果是和你的输出参数有关的,并不是不变的。
还有就是你的 mobile 和 appkey 怎么传递的都是中文,官方给的貌似都是数字和字母呃。
热心网友
时间:2022-05-16 08:44
我来分享一下正确答案吧,经测试可用
紧接着楼主的代码:
const request = require('request');
let sig = CryptoJS.SHA256(`appkey=${strAppKey}&random=${strRand}&time=${strTime}`).toString();
let body = {
sig:sig,
time:strTime,
其他字段:看到这里请点个赞};
request.post({
url: url, body: JSON.stringify(body)
}, (err, response, body)=> {
console.log(err, response.statusCode, body);
});
热心网友
时间:2022-05-16 10:18
呃, 不太明白, 是要加密还是 hash? hash 的话各种库请自己 Google, 加密的话貌似只有分组加密是指定位数的? 但是一般分组加密不会弄这么少的位数吧.