关于腾讯云短信接口的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, 加密的话貌似只有分组加密是指定位数的? 但是一般分组加密不会弄这么少的位数吧.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com