【问题标题】:How to create token using Hmac in Node js如何在 Node js 中使用 Hmac 创建令牌
【发布时间】:2020-07-31 09:21:36
【问题描述】:

我正在尝试将 Java 代码转换为 Node js 以使用 Hmac 生成令牌。 Java代码-

Mac mac = Mac.getInstance("HmacSHA256")
SecretKeySpec key = new SecretKeySpec(mysecret.getBytes("UTF-8","HmacSHA256")
mac.init(key)
byte[] hash = mac.doFinal(texttoEncode.getBytes(UTF-8))

谁能建议它的 Javascript /node js 等效项。

【问题讨论】:

    标签: javascript java node.js


    【解决方案1】:

    crypto 内置模块提供createHmac 方法,其签名如下:

    crypto.createHmac(algorithm, key[, options])
    

    创建令牌:

    const Crypto = require('crypto');
    
    const token = Crypto.createHmac('sha256', 'a secret').update('data').digest('hex');
    
    console.log(token); // 5da263f0f0ee86707c7c3f590d20066b7107e5ac70a41560926fa634bc78b137
    

    【讨论】:

    • 嗨,亚当,在 Java 代码中,他们将字节数组传递给 dofinal,但在 createhmac 更新中,我们只能传递字符串。当我在更新函数中传递字符串时输出不一样
    • @bhanu, update 接受 BinaryLike 参数。您可以使用Buffer 创建该 DS。
    • 是的,Crypto.createHmac('sha256', 'a secret').update('data').digest('hex') 会得到一个字符串。如果想要一个数组,试试 Crypto。 createHmac('sha256', 'a secret').update('data').digest() @bhanu
    • 感谢 Adam 通过缓冲区解决了这个问题。
    猜你喜欢
    • 2023-02-06
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多