Md5
目前 44 個字元已知時,反轉 76 個字元串的 MD5
我有一種情況,我想反轉一個雜湊值,它是 76 個字元串聯的 MD5。我知道前 44 個字元,但不知道剩下的 32 個字元。問題描述如下:
Hash = MD5 (cat (known_string_of_length_44chars, unknown_string_of_length_32chars))
我可以為 known_string 的多個組合生成雜湊值。我想確定unknown_string。這可以做到嗎?暴力破解有可能嗎?
你有兩個問題,第一個是原像攻擊MD5的計算複雜度。目前大約是 2^123對 MD5 雜湊的前像攻擊 這在技術上比蠻力更好,但在可預見的未來是可行的。但也許比這更糟糕的是資訊論的限制。原像攻擊會找到原像,而不是最初使用的原像。使用 32 個字元可以獲得 256 bi 的空間,遠遠超過 MD5 的 128 位。這意味著預計會有許多所需形式的原像。這意味著如果您想找到原始值而不是任何具有正確形式和正確雜湊的值,即使具有無限的計算能力也是不可能的。同樣的事情也告訴我們,要求這種形式的預映像不能提高預映像攻擊的複雜性,因為我們可以選擇任何前綴並仍然期望許多解決方案。如果你可以限制在一個小的原像空間,你可以暴力破解它。
假設字元是隨機的單字節值,那麼您就不走運了。
您需要暴力破解一個 32 字節的密鑰空間,即 256 位……這是一項幾乎不可能完成的任務。
(如果您想簡要了解不可能的情況,請參見此處。)