Hash
SHA256 雜湊是否可能一遍又一遍地具有相同的十六進製字元?
理論上,有無限的輸入,您可以使用 SHA-256 進行散列。所以從理論上講,一個雜湊字元串可能會讀取
0xaaaaaaaa...
但這實際上是否可行,或者算法是否會檢查這是否沒有發生?
首先,SHA-256 的輸出是二進制的,由 32 個字節組成(256 表示以位為單位的輸出大小)。您所說的顯然是這些字節的十六進制編碼。
您正在談論的可能性稱為(1st)原像阻力(維基百科):
給定一個雜湊值 $ h $ ,應該很難找到任何消息 $ m $ 這樣 $ h = \text{H}(m) $ .
(“困難”在這裡是一個非技術術語,一般我們使用“計算上不可行”,顯然會有映射到任何雜湊值的消息,難的是找到它們進行單向雜湊)
不,算法不會明確檢查這一點,因為算法本身需要抵抗它。此外,某些位的重複本身並沒有那麼特別。目前還不清楚您需要測試什麼。
“但這實際上也可能嗎”好吧,不,除非 SHA-2 被破壞。通常首先破壞的是**抗碰撞性。**這意味著找到一個雜湊值 $ \text{H}(m) = \text{H}(m’) $ 對於任何 $ m $ 和 $ m’ $ . 這更容易攻擊,因為攻擊者可以嘗試找到算法中的弱點,從而在控制兩者的同時產生內部衝突 $ m $ 和 $ m’ $ . SHA-256 在這方面仍然被認為是安全的。