Md5

是否可以證明任何 x 的 md5(x) != x?

  • January 11, 2016

如果可能的話,我正在尋找一個易於理解的解釋,以證明/證明此斷言的有效性(或無效!):

對於任何 X,md5(X) != X(即 X 任何 32 個十六進製字元的字元串)

不知道有沒有固定點。因為MD5給你 128 位,你也需要一個 128 位的輸入。那就是您實際上正在考慮從 128 位字元串集合到 128 位字元串的函式。假設這樣一個函式是隨機選擇的。然後我們可以計算函式有一個不動點的機率。答案在這個答案中說明:https ://stackoverflow.com/questions/235785/is-there-an-md5-fixed-point-where-md5x-x 。進一步解壓:

說你有任何 $ 2^{128} $ 可能的輸入。那麼這是一個不動點的機率是 $ (1/2)^{128} $ 因為,例如,第一位必須映射到第一位,依此類推。所以輸入不是固定點的機率是 $ 1 - (1/2)^{128} $ . 所以沒有輸入是固定點的機率是

$ (1 - (1/2)^{128})^{(2^{128})} $

因為有 $ 2^{128} $ 可能的輸入。

因此存在不動點的機率為 $ 1 - (1 - (1/2)^{128})^{(2^{128})} $ . 如果你計算這個機率,你會得到大約 63.21%。

所以實際上很可能有一個固定點MD5或任何其他散列函式。

請注意,這並不能證明存在一個固定點,而只是說明了可能性。

展示/證明是否存在固定點的唯一方法是計算所有 128 位字元串的所有雜湊值並將它們與輸出進行比較。但是,正如上面評論中的註釋,這不是很實用。

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