首页 > 解决方案 > HMAC sha1 签名与 x-hub-signature 标头不匹配

问题描述

我正在尝试验证 HMAC 签名,但我几乎尝试了所有方法,但无法使其正常工作。下面是我的代码..

const sig = request.headers['x-hub-signature'] || '';
            const hmac = crypto.createHmac('sha1', '56e2a9fa00996dd4b026b55a5134df650acb42c83767dd5456eb2f3496ef85a4');
            const digest = Buffer.from('sha1=' + hmac.update(JSON.stringify(request.body)).digest('hex'), 'utf8');
            const checksum = Buffer.from(sig, 'utf8');
            if (checksum.length !== digest.length || !crypto.timingSafeEqual(digest, checksum)) {
                return console.log(`Request body digest (${digest}) did not match X-Hub-Signature (${checksum})`);
            }

甚至内容类型也是 application/json .. 那么请有人帮我解决这个问题吗?

标签: javascriptnode.jshmachmacsha1

解决方案


得到了答案..需要base64而不是十六进制转换:)


推荐阅读