用sha1sum,sha256sum等进行哈希处理时,零字节文本文件如何生成哈希?程序对哪些数据进行哈希处理以生成哈希值?
钽
用sha1sum,sha256sum等进行哈希处理时,零字节文本文件如何生成哈希?程序对哪些数据进行哈希处理以生成哈希值?
钽
Answers:
哈希算法会读取输入并进行处理,无论是否有数据。这是一种有效的通缉行为,甚至可以用来验证某个实现是否正确。这导致所有主要算法的“空哈希”。
总结一下:da39a3ee5e6b4b0d3255bfef95601890afd80709是到处都是空文件的sha1哈希,对于其他算法的null哈希也是如此。
快速哈希中的所有哈希算法都是Merkle–Damgård构造。这样,它们会将消息填充为块大小的倍数。
Quick Hash的算法通过在需要的地方添加1
一点,0
最后增加消息长度来实现此目的。
这允许散列任意长度的消息,包括零长度消息。
(附加到Dennis和fixer1234的答案吗?)
简洁地说:
$ shasum -a 256 /dev/null
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /dev/null
所有0字节的文件将具有相同的校验和。
$ shasum -a 512 /dev/null
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e /dev/null
$ shasum /dev/null
da39a3ee5e6b4b0d3255bfef95601890afd80709 /dev/null
$ md5 /dev/null
MD5 (/dev/null) = d41d8cd98f00b204e9800998ecf8427e
(注意:MD5已损坏;它不是“安全哈希”。这在Wikipedia的MD5条目中有记录。)
因此,例如,如果您尝试使用此处列出的安全哈希值之一来验证virustotal.com上文件的安全性,da39a3ee5e6b4b0d3255bfef95601890afd80709
那么您可以确定文件确实为0字节(或为文件夹,令人迷惑的是,病毒总数就像是一个0字节的文件一样散列。)