python - HMAC签名和直接散列有什么区别?

标签 python hash cryptography hmac

只是出于好奇,真的......例如,在 python 中,

hashlib.sha1("key" + "data").hexdigest() != hmac.new("key", "data", hashlib.sha1)

这两个操作之间是否缺少一些逻辑上的区别?

最佳答案

hashlib.sha1 为您提供您作为参数提供的内容“keydata”的简单 sha1 哈希值(请注意,您只是将两个字符串连接起来)。 hmac 调用使用字符串“key”作为键并使用 sha1 作为哈希函数为您提供字符串“data”的键控哈希。这两个调用之间的根本区别在于,HMAC 只能在您知道 key 的情况下才能复制,因此您也会知道一些关于谁生成了 hmac 的信息。 SHA1 只能用于检测内容没有改变。

关于python - HMAC签名和直接散列有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11526799/

相关文章:

android - 客户信息中的 Magento 密码哈希

cryptography - 什么是 RSA "key ID"?

ssl - 导入到根存储中的非自签名证书是否需要(自签名)颁发者也导入到根存储中?

c# - 使用 Rijndael 解密时为 "Padding is invalid and cannot be removed"

python - 如何使用 Matplotlib 在极坐标中绘制具有等高线密度线的散点图?

python - 如何将 Keras 模型加载到内存中并在需要时使用它?

java - 需要内存有效的方式来存储大量字符串(是 : HAT-Trie implementation in java)

python - 在 opencv - numpy - python 中转换颜色时失去抗锯齿

python - 如何在 for 循环中从列表中赋值

hash - 为什么将 f64 转换为 u64 然后再转换回 f64 会导致不同的值?