Sha-256

兩個文件/字元串可以具有相同的 SHA-256 值嗎?

  • December 8, 2021

我想知道理論上,兩個文件是否可以具有相同的 SHA-256 值。

由於只有 $ 16^{256} $ 或者 $ 2^{1024} $ SHA256 總和,所有 1024 位文件(帶有 $ 2^{1024} $ 不同的組合)必須有不同的 SHA256 和(如果我沒記錯的話)。

此外,對於文件大小較大的文件(例如,2048 字節的文件,其中有 $ 8^{2048} $ = $ 2^{6144} $ 不同的組合),必須有 2 個具有相同 SHA256 和的文件。

而且,一旦有兩個文件具有相同的 SHA256 和,那又如何呢?這是否意味著 SHA256 總和被破壞了?

謝謝你滿足我的好奇心。

我不確定你在哪裡 $ 16^{256} $ . SHA-256 產生的雜湊值是 $ 256 $ 長,所以有 $ 2^{256} $ 可能性。

所以,讓我們考慮所有 $ 256 $ 位輸入。他們會映射到 $ 256 $ 位 SHA-256 輸出,一對一,沒有衝突?幾乎可以肯定不是。

如果我們在加密 $ 256 $ 位塊,然後是的,他們會,因為根據定義加密必須是可逆的,所以加密算法確實一對一地映射事物。但是安全散列算法不是以這種方式設計的。

所以,與其認為有 $ 2^{256} $ 輸入,和 $ 2^{256} $ 輸出,因此它們是一對一的,而是認為您正在從一組 $ 2^{256} $ 物品,隨機,有更換。可能會有很多衝突。一些輸入將映射到相同的輸出。

當然,一旦你開始考慮更長的輸入,根據鴿巢原理,輸入就會多於輸出,衝突是不可避免的。

但是,這並不意味著 SHA-256 已損壞。一點也不。這種衝突問題是任何安全散列系統所固有的,但我們仍然使用安全散列並且它們可以工作。如果它們不起作用,我們將無法線上購買東西。

理論上,有碰撞,是的。但是只有當有一種實用的方法可以故意產生衝突時,雜湊才會被破壞。到目前為止,還沒有人發布任何針對 SHA-256 或任何 SHA-2 系列雜湊的此類攻擊。

引用自:https://crypto.stackexchange.com/questions/33929