将crypto hmac转换为crypto-js hmac字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将crypto hmac转换为crypto-js hmac字符串相关的知识,希望对你有一定的参考价值。

我正在尝试转换秘密的hmac字符串以允许我在邮递员中测试我的api。 Postman预装了cryptojs。这是我使用crypto在我的测试服务器上得到的过程:

const crypto = require('crypto');
const generateHmac = (privateKey, ts) => {
    const hmac = crypto.createHmac('sha256', privateKey);
    hmac.update(ts);
    const signature = hmac.digest('hex');
    return signature;
}

这与邮递员中使用cryptojs生成的字符串不匹配:

const createHmacString = (privateKey, ts) => {
    const hmac = CryptoJS.HmacSHA256(ts, privateKey).toString(CryptoJS.enc.Hex)
    return hmac;
}

不知道我在这里做错了什么。提前致谢!

答案

好吧终于明白了 - crypto-js不提供实际的字节,因此编码所有内容是必要的:

const createHmacString = (privateKey, ts) => {
    const key = CryptoJS.enc.Utf8.parse(privateKey)
    const timestamp = CryptoJS.enc.Utf8.parse(ts)
    const hmac = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256(timestamp, key))

    //  const hmac = CryptoJS.HmacSHA256(ts, privateKey).toString(CryptoJS.enc.Hex)
    return hmac;
}

let ts = new Date().getTime();
const signature = createHmacString("your-private-key", ts);

以上是关于将crypto hmac转换为crypto-js hmac字符串的主要内容,如果未能解决你的问题,请参考以下文章

使用 crypto-js 解密二进制文件(图像)

尝试使用 crypto-js 和 nodejs 解密

前端 使用 crypto-js 对数据进行对称加密

vue+typescript如何使用crypto-js

crypto-js计算文件的sha256值

crypto-js加密