Node.js crypto.createHash和crypto.createHmac之间有什么区别?

Node.js crypto.createHash和crypto.createHmac之间有什么区别?,node.js,encryption,openssl,Node.js,Encryption,Openssl,描述技术上的差异,但不是实际的差异。文档已经假设您了解用于什么目的的内容 加密散列是一个单向函数,从任意长度的输入创建固定长度的输出。您可以将哈希函数映像为“指纹”。理论上,不可能为任何输入创建唯一的散列,但加密散列函数的设计可以忽略碰撞概率,并且不可能计算原始输入。(还有一些其他功能,但这些是基本功能要求) 典型的用例是 完整性检查,如果输入没有意外更改 大数据的短识别 数据匿名化 类似于散列,但HMAC需要一个键作为附加输入 常见用例: 和hash一样 完整性检查,以确保输入未更改(

描述技术上的差异,但不是实际的差异。

文档已经假设您了解用于什么目的的内容

加密散列是一个单向函数,从任意长度的输入创建固定长度的输出。您可以将哈希函数映像为“指纹”。理论上,不可能为任何输入创建唯一的散列,但加密散列函数的设计可以忽略碰撞概率,并且不可能计算原始输入。(还有一些其他功能,但这些是基本功能要求)

典型的用例是

  • 完整性检查,如果输入没有意外更改
  • 大数据的短识别
  • 数据匿名化

类似于散列,但HMAC需要一个键作为附加输入

常见用例:

  • 和hash一样
  • 完整性检查,以确保输入未更改(即使是有意更改)
  • 不可否认-确保数据由密钥所有者生成

你没有看到任何实际差异是什么意思?散列需要一个输入(数据),HMAC需要两个输入(键和数据)。我想说,这些是非常重要的实际差异。它们也有非常不同的用例。@ArtjomB。你能在回答中描述用例吗?不,因为不是它们的用例,而是它们的属性很重要。如果您了解它们的属性,那么您可以评估它们对您的用例是否有意义。