零位元組檔案如何產生雜湊值?

零位元組檔案如何產生雜湊值?

當使用 sha1sum、sha256sum 等進行雜湊處理時,零位元組文字檔案如何產生雜湊值?程式對哪些資料進行哈希處理以產生哈希值?

Linux 中的 QuickHash

終端命令

答案1

哈希演算法讀取輸入並處理它,無論是否有資料。這是一種有效且需要的行為,甚至可以用來驗證某個實作是否正確。這導致所有主要演算法都出現“空哈希”。

總結一下:da39a3ee5e6b4b0d3255bfef95601890afd80709 是到處都是空檔案的 sha1 雜湊值,其他演算法的空雜湊值也是如此。

答案2

Quick Hash 中的所有哈希演算法都是Merkle–Damgård 結構。因此,他們將訊息填充到區塊大小的倍數。

快速哈希演算法透過附加一個1位元、根據需要添加多個0位元以及最後附加訊息長度來實現此目的。

這允許散列任意長度的消息,包括零長度訊息。

答案3

(補充 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 已損壞;它不是「安全哈希」。維基百科的 MD5 條目對此進行了記錄。)

因此,例如,如果您嘗試驗證文件的無害性virustotal.com使用此處列出的安全雜湊值之一,例如da39a3ee5e6b4b0d3255bfef95601890afd80709,您可以確信該檔案確實是0 位元組(或者是一個資料夾,其中病毒總數令人困惑地進行哈希處理,就好像它是0 字節文件一樣。

相關內容