Node.js hmac.update() 方法

2025年2月13日 | 阅读 5 分钟

在本文中,我们将讨论 Node.js hmac.update() 函数,包括其语法、参数和示例。

Node.js hmac.update() 函数是什么?

Node.js 中, 最重要的模块是 crypto 模块,它包含许多加密原语,例如基于哈希的消息认证码 (HMAC)。HMAC 对于数据验证和建立精确通信的有效性至关重要,在这些通信中,安全性是首要问题。hmac.update() 方法被认为是这种情况下的一个最重要步骤,开发人员可以通过 hash-update 函数手动实现此函数,或者通过后续的内联数据更新来启动 HMAC。Hmac 类和 Hashes 实用类用于生成加密摘要。hmac.update 方法用于将 HMAC 值与数据或消息进行混合。如果不存在 'utf8', 则没有编码,数据以字符串事件的形式被程序化处理,从而无法强制将其作为默认选项。

语法

hmac. update() 方法的语法如下:

参数

  • hmac: HMAC (基于哈希的消息认证码) 对象,可以使用 crypto module. createHmac() 方法创建。
  • data: 需要在 HMAC 计算过程中进行哈希或混合的输入数据。
  • input_encoding (可选): 输入数据的转换。默认为 'utf8'。

示例 1

创建一个名为 "hmacUpdate.js" 的文件,并复制以下代码:

首先,生成文件,然后使用命令“node hmacUpdate.js”运行代码。

输出

 
Hmac is: ee0346738c3ef991f8661fd7a1eecda3227eb8c11711d53a0ecb0b49b194f56a

说明

  • 在上面的示例中,我们使用了 crypto 模块的代码片段。它在 SHA-256 哈希算法的支持下构建了一个基于哈希的消息认证码 (HMAC)。首先,createHmac() 函数实例化一个名为 hmac 的 HMAC 对象,该对象指定了哈希函数 ('sha256') 和一个密钥 ('secretKey')。
  • 此外,update() 方法用于向 HMAC 对象逐步添加以下数据块:“Hi”、“welcome”、“to”和“JavaTpoint”。在这种情况下,优先处理重要任务并将问题分解为更小的部分可以带来更高的效率。最后,digest() 方法使用 hashlib 库遍历消息列表,存储消息连接的比例,然后以十六进制格式将 HMAC 值打印到控制台。
  • 之后,我们可以看到 Node 中的 crypto 模块是多么的通用和实用。密钥对生成 (ECDSA/ecm) 在浏览器的 js 上运行,用于加密操作,特别是用于创建消息认证码。

示例 2

让我们来看另一个示例来说明 Node.js hmac.update() 方法。

输出

 
The Hmac value with hex Encoidng is: 
2e8e772466a34a34f40f949135ae83d13700340a2f7a2fd6775c160f89f6ef36
The Hmac value with Base64 Encoding is: Lo53JGajSjT0D5SRNa6D0TcANAovei/Wd1wWD4n27zY=
The Hmac value with Default Encoding is: .w$fJ4574
/z/w\6

说明

上面的示例代码展示了如何在 Node.js 中使用 crypto 来生成使用 SHA-256 算法的 HMAC (基于哈希的消息认证码) 值。

  • 在此示例中,首先,我们导入了 Crypto 模块。之后,使用 createHmac 方法创建了三个 HMAC 对象实例 (hma, hma1, hma2),该方法接受两个参数:SHA-256 哈希算法(在此特定情况下)和用于生成 HMAC 的密钥
  • 之后,在每个 HMAC 对象上调用 update() 方法,使用输入数据“JavaTpoint”来更新 HMAC 值。使用 HMAC 的更新过程使我们能够通过添加更多数据来执行 HMAC 计算。
  • 最后,在 HMAC 值更新后,对每个 HMAC 对象调用 digest 方法来生成最终的 HMAC 值。digest 方法是一个可选的参数编码参数。在此部分,HMAC 值将使用多种编码打印到控制台。
  • 最初,HMAC 值以十六进制格式 (hex) 计算,然后打印到控制台。第二个 HMAC 值使用 Base64 编码 (base64) 打印。第三个 HMAC 值通过调用默认编码(Buffer 类型)来打印。

结论

总之,Node.js 中的 hmac.update() 方法将由 HMAC 对象使用,在 HMAC 计算过程中迭代地用数据的哈希替换之前的哈希键。它是一种按特定顺序将额外数据集成到 HMAC 计算中的方法。update() 方法将输入数据作为参数传递,并且可以指定输入数据的编码。

在示例 1 中:源代码展示了 hmac.update() 方法的用法。createHmac() 方法创建一个指定哈希算法和密钥的对象。然后,update() 函数使用交替的数据输入来更新当前的 HMAC 值。最后一步是利用 digest 方法生成最终的 HMAC 值,并将其打印到控制台。

在示例 2 中:以相同的方式说明了这一点,但这次它与多个 HMAC 对象一起执行。创建了三个 HMAC 对象,并逐一调用它们的 update() 方法,使用主要的输入数据。digest() 方法使用不同类型的编码以不同的形式获取 HMAC 值(十六进制、Base64,但也是默认编码)。

总而言之,hmac.update() 方法对于在 Node.js 中计算 HMAC 值至关重要。如果存在输入数据来计算最终的 HMAC 值,它会获得一个 HMAC 对象,并更新哈希。