javascript - typescript crypto-js 如何使用 sha256 算法和 key 对数据进行哈希处理

标签 javascript typescript encryption cryptography

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

算法 - sha256

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

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

CryptoJS.SHA256(message).toString(CryptoJS.enc.Hex)

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

这是完整的代码。
希望你能帮忙。先感谢您
    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

生成签名的值(我们的结束)
1a45e3be48f64911d372bcccd9c4dbe7dca9dab716603e4e80c2e55f701bde7a

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

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

即在线网站生成的和支付网关发送的哈希值匹配,这意味着我们的代码有问题。
谢谢

最佳答案

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

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

关于javascript - typescript crypto-js 如何使用 sha256 算法和 key 对数据进行哈希处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60186073/

相关文章:

ruby - 在 ruby​​ 中使用密码加密字符串

JavaScript - 来自匹配 ID 的新对象数组

javascript - Moment.js 将 x 分钟转换为 y 小时 z 分钟

javascript - *ngIf 数组中存在值

html - Angular 5 将 Html 生成为 pdf?

javascript - Angular:@Output() x: EventEmitter 和 @Input() 回调之间的权衡是什么?

php - 在 PHP 中重定向时如何在 URL 中传递 'encrypt' 信息?

encryption - 如何在非对称加密(libsodium)中使用随机数?

javascript - 为什么我的背景图片隐藏了我的键码生成器?

javascript - 比较两个对象并将旧对象属性值分配给新对象属性值(如果新值为空或 null)的函数?