只是出于好奇,真的......例如,在 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/