0

无法为 Cyber​​source 签名标头生成正确的 HMAC 256 哈希

我已经为此工作了几天,我可以使用提供的示例代码轻松地让它在 .Net 中工作,以生成正确的 HMAC 签名。但是我无法让 CryptoJS 工作,我相信它源于 CryptoJS 在内部将“\n”解释为 LRCF 并因此抛出加密的事实。请注意,我仅限于 ECMA5,并且已将 CryptoJS 作为缩小函数引入。

var data = "host: api.cybersource.com\ndate: Mon, 10 Jun 2019 20:41:05 GMT\n(request-target): get /reporting/v3/report-downloads?organizationId={OrgId}&reportDate=2019-06-06&reportName=PaymentBatchDetailReport\nv-c-merchant-id: {MerchId}";

var hash   = CryptoJS.HmacSHA256(data, "{SecretKey}");
var base64 = CryptoJS.enc.Base64.stringify(hash);
document.write(base64);

任何帮助将不胜感激!

4

1 回答 1

0

确保在将密钥传递给 CryptoJS.HmacSHA256 之前对您的密钥进行 Base64 解码。

例如 var words = CryptoJS.enc.Base64.parse({SecretKey}); var hash = CryptoJS.HmacSHA256(data, words);

于 2019-06-11T21:59:02.487 回答