typescript crypto-js 如何使用 sha256 算法和密钥散列数据

pra*_*wal 6 javascript encryption cryptography typescript

我正在使用 typescript 版本 3.7.2 来使用 crypto-js 加密数据。

算法 - sha256

但是我的代码生成了错误的散列数据。

该代码工作正常,无需使用任何键来散列数据,例如

CryptoJS.SHA256(message).toString(CryptoJS.enc.Hex)
Run Code Online (Sandbox Code Playgroud)

但是当我使用密钥时它正在做错误的散列

这是完整的代码。希望你能帮忙。先感谢您

    import CryptoJS from 'crypto-js';

    let order_id = 'order_EFph1itQK4z1NQ',
    let payment_id = 'pay_EFph2XRs3vkaB8',

    let generated_signature = CryptoJS.SHA256(order_id + "|" + payment_id, secret).toString(CryptoJS.enc.Hex);
 // secret is some key
Run Code Online (Sandbox Code Playgroud)

生成签名的价值(我们的结局)

1a45e3be48f64911d372bcccd9c4dbe7dca9dab716603e4e80c2e55f701bde7a
Run Code Online (Sandbox Code Playgroud)

要比较的哈希值(由支付网关发送)

e236e8fe62c54546b85dede32c432d4c73c27157840a8ba67cfc09270b53064a
Run Code Online (Sandbox Code Playgroud)

在线网站生成的哈希值https://www.freeformatter.com/hmac-generator.html#ad-output

e236e8fe62c54546b85dede32c432d4c73c27157840a8ba67cfc09270b53064a
Run Code Online (Sandbox Code Playgroud)

网上网站生成的和支付网关发送的ieHash值是匹配的,说明我们的代码有问题。谢谢

小智 9

您期望计算 SHA256 HMAC,但实际上正在计算消息的 SHA256 哈希值order_id + "|" + payment_id。传递给 SHA256 函数的参数secret将被忽略。

替换CryptoJS.SHA256CryptoJS.HmacSHA256,您的代码将按预期工作。