gpt4 book ai didi

node.js - 加密 Node 库更新是什么意思?

转载 作者:行者123 更新时间:2023-12-02 13:46:13 25 4
gpt4 key购买 nike

crypto node library有许多标记为 update 的函数( exampleexampleexample )。文档很好,但是每个文档都简单地用“更新...”解释了 update 的功能。

例如:

hmac.update(data[, inputEncoding])

Updates the Hmac content with the given data, the encoding of which isgiven in inputEncoding and can be 'utf8', 'ascii' or 'latin1'. Ifencoding is not provided, and the data is a string, an encoding of'utf8' is enforced. If data is a Buffer, TypedArray, or DataView, theninputEncoding is ignored.

我的问题是“请解释一下在此上下文中更新的含义”

最佳答案

update 方法使用给定的输入更新 HMAC 算法的内部状态。名为 update 的方法几乎普遍与某种 final 方法结合使用(有时称为 doFinal 或类似方法,以避免与名为的关键字发生名称冲突) 最终)。此 final方法执行内部状态的最后更新并执行任何最终操作。

对于 HMAC,它对 o_key_pad 和经过哈希处理的 i_key_pad 以及消息执行最终哈希。 final 方法也可能有不同的调用方式;例如,对于 HMAC,它被称为 digest 来计算最终摘要,即 HMAC 计算的输出。

创建更新方法是为了允许使用多个更新大型消息。 final方法是必要的,因此算法知道已到达消息末尾并且可以执行最终操作。

<小时/>

签名生成和HMAC计算具有相当相同的目的;一种是使用对称 key ,另一种是非对称 key 对。但通常签名生成/验证的工作原理与 HMAC 生成/验证几乎相同。

<小时/>

如果使用加密,则更新也可能返回密文或明文输出。如果确实如此,取决于算法和算法实现返回什么以及何时返回。例如,如果您调用 CBC 模式,则在进行任何 block 加密/解密之前,至少需要缓冲一 block 明文/密文。缓冲。但原则上计数器模式可以直接返回特定字节的密文;这是流密码的在线属性。然而,实现也可能决定缓冲明文/密文,直到完整的 block 可用。

对于 NodeJS,还有 CCM 模式的实现。此模式对 updatefinal 都有特殊要求。 update 可能只被调用一次,并且 final必须精确调用一次。 CCM 模式使用无法使用流更新的数据包格式,因此多次更新会破坏 CCM(其中包括身份验证标记计算前面的消息大小)。最后需要调用final来创建/验证认证标签。

<小时/>

注释:

  • 通常,初始内部状态是在创建期间或使用显式初始化方法设置的。 NodeJS 显然选择在创建对象期间进行初始化。

  • 哈希算法还需要缓冲明文,因为它们只能对明文 block 进行操作(确切地说,SHA-256 为 512 字节,SHA-512 为 1024 字节)。然而,这对于哈希函数的用户来说是透明的,因为它们不生成中间输出。 HMAC 仅基于哈希函数和一些异或运算,当然具有相同的要求,因此需要缓冲。

  • 有时还需要更新功能,因为并非所有消息都同时可用或在同一数组中可用。例如,TL​​S 会验证所有发送/接收的握手消息,因此只要下一条消息可用,就会调用 update

  • 其他不处理大消息的算法通常不包含更新方法。例如,PBKDF2 不使用 update,因为没有理由传输密码或盐;它们只是使用单个变量给出。

关于node.js - 加密 Node 库更新是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51597285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com