Hash
如果 x 位在其原始輸入中發生更改,則結果散列中的多少位將更改?
我遇到了一個問題,說明:
我們有一條由 10,000 個字元組成的消息。在使用SHA-1計算其消息摘要後,我們決定更改原始消息中的最後 19 個字元。如果重新計算,摘要中有多少位會發生變化,為什麼?
除非這是對散列方案的明確攻擊,否則新的散列將與原始散列不同(有點表現出雪崩效應)。
但我無法理解輸入文本中的微小變化如何影響它們相應的雜湊值。如果對輸入文本進行某種更改,是否存在關於雜湊的多少位會受到影響的關係?
**PS:**我不是 100% 確定,但我相信我在某處讀過它,雜湊算法應該通過 $ X $ % 如果新字元/位被添加/替換到先前的輸入文本。
對於任何一種 SHA 散列,散列應該與偽隨機沒有區別。這意味著每一位都有 50% 的機會翻轉。因此,只要輸入消息不重複(因為這將 100% 匹配相同消息的雜湊值,當然),平均一半的比特量會被翻轉。刪除、添加或更改多少輸入位無關緊要,只要輸入消息與前一個消息不同,情況總是如此。
雜湊可能分佈良好,因此可能翻轉的位數是一個鐘形曲線,就像你通過擲骰子得到的一樣。零位的數量也是如此 - 當然是一位。所以你不能給出一個絕對數字作為這個問題的答案。結果不是一個函式 $ x $ 如果 $ x $ 是輸入中翻轉的位數 - 只要 $ x $ 大於零。