gpt4 book ai didi

node.js - 为什么 node.js SHA1 主体与 GitHub webhook SHA1 值不同?

转载 作者:太空宇宙 更新时间:2023-11-03 22:33:40 24 4
gpt4 key购买 nike

我多次尝试使用node.js crypto 包来计算req.body SHA1 值。但总有不同。

我正在使用以下代码:

var body = req.body;
var sig = 'sha1=' + crypto.createHmac('sha1', secret).update(JSON.stringify(body)).digest('hex');
console.log(sig === req.headers['x-hub-signature']) // not equal :(

var body = req.body;
var sig = 'sha1=' + crypto.createHmac('sha1', secret).update(new Buffer(JSON.stringify(body))).digest('hex');
console.log(sig === req.headers['x-hub-signature']) //not equal :(

非常感谢您能给我的任何帮助!

谢谢:)

最佳答案

终于知道导致这个问题的原因了。因为,Github 将一个字符串发布到我的服务器,Github 计算出这个字符串的 SHA1 值。但是在我的nodejs代码中,我使用body-parser包作为中间件,所以我得到了

{  
payload: {...}
}

和 SHA1,因此,从来没有平等过。

现在,我们知道原因了,我们可以解决这个问题了。只是

  var bufferArr = [];
var bufferLen = 0;
req.on('data', function(chunk) {
bufferArr.push(chunk);
bufferLen += chunk.length;
});
req.on('end', function() {
var data = Buffer.concat(bufferArr, bufferLen).toString();
var sig = 'sha1=' + crypto.createHmac('sha1', secret)
.update(data).digest('hex');
console.log(sig === req.headers['x-hub-signature']) // true
}

希望我的经验可以帮助到其他人

关于node.js - 为什么 node.js SHA1 主体与 GitHub webhook SHA1 值不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33185155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com