crypto.createHash 和 crypto.createHmac 有什么区别?

Set*_*eth 0 encryption openssl node.js

这些文档描述了技术差异,但没有描述实际差异。

gus*_*to2 8

该文档已经假设您了解什么用途。

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

典型用例是

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

HMAC与哈希类似,但 HMAC 需要密钥作为附加输入。

常见用例:

  • 与哈希相同
  • 完整性检查以确保输入未被更改(即使是故意更改)。
  • 不可否认性 - 确保数据是由密钥所有者生成的