HMAC签名和哈希直接有什么区别?

时间:2012-07-17 16:24:40

标签: python hash cryptography hmac

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

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

这两个动作之间是否存在一些逻辑上的区别?

2 个答案:

答案 0 :(得分:3)

hashlib.sha1简单地为您提供了作为参数提供的内容“keydata”的sha1哈希值(请注意,您只是连接两个字符串)。 hmac调用为您提供字符串“data”的键控哈希值,使用字符串“key”作为键,sha1作为哈希函数。这两个电话之间的根本区别在于HMAC只有在您知道密钥时才能被复制,因此您也可以了解谁生成了hmac。 SHA1只能用于检测内容是否未更改。

答案 1 :(得分:1)

我在手册中找到了答案。

https://en.wikipedia.org/wiki/Hmac#Design_principles