標籤:

如何破解經過 MD5 演算法處理的信息?


欸。。其實還有強大的社工也可以做到 。

詳見 http://www.cmd5.com 此站長的社工技巧相當高明哦 用心幾年經營。哈。


首先要澄清一個概念:MD5是摘要演算法而非加密演算法。

具體說就是,無論是多長的輸入,MD5都會輸出長度為128bits的一個串(通常用16進位表示為32個字元)。所以很容易知道,理論上有無數個輸入對應某個特定的MD5值,不過在現有的條件下還沒有有效的方法能快速找到。

前幾年山東大學的王小雲教授有個突破,就是找到了幾對不同的輸入,它們的MD5值相同。

雖然這個離完全破解(參考置頂的第三條)還有相當差距,但個人認為這個動搖了比如《數字簽名法》的理論基礎,還是有不小的影響的,所以現在一般都認為MD5不再安全,轉而推薦使用更安全的SHA1甚至SHA256等。


md5是摘要演算法,本身就已經損失大量必要的信息量,無論多長的信息都給你輸出一個固定長度字元串,過程不可逆,把上帝叫來都不可能給你「破解」。

目前的做法都是將所有可能出現的原文都分別算出md5值存儲起來,用戶可以用md5值索引可能的原文。也就是彩虹表。

如算出123456的三十二位md5結果是e10adc3949ba59abbe56e057f20f883e,你把這個結果錄入資料庫,反過來你輸入e10adc3949ba59abbe56e057f20f883e就能查出原文可能是什麼,也有可能包含其他的可能性。


MD5是hash演算法。Hash演算法只有collision,沒有解密。如果能用彩虹表或者窮舉以外的方式製造某個hash演算法的collision,就說明這個演算法不夠安全。

  1. 能夠非窮舉的找到hash collision的兩條正文。
  2. 能夠非窮舉的找到與給定正文存在hash collision的另一條正文。
  3. 能夠非窮舉的找到與給定正文存在hash collision的另一條正文,而且該正文滿足一定約束——比如是有意義的英文。

1基本上對安全影響不大。2會影響密碼驗證這種安全應用。3會導致數字簽名的內容被篡改。

目前有研究能做到1,或者可能2。但是3幾乎不可能。


補充一點,還有關於MD5破譯方面除了collision以外的研究:即,通過密文反推原文。這裡的原文指的是真正意義上加密前的文本,而非另一個與原文有相同MD5值的文本。

MD5的加密過程有64個步驟,這樣一種研究目前可以做到28到32步左右(具體數值有些忘記,但確定是小於33的)。也就是說,給定一個原文,執行MD5加密過程前28步後產生的密文,是完全可以推出原文的。這裡每增加1步,破譯難度都幾乎是倍數上升,從早期的十幾步到現在的二十多接近三十步,雖然已經是非常大的進步了,但離完全破譯MD5的64步還有不少距離,有很多工作需要做。

希望有所幫助,歡迎討論。


目前為止,對於Hash演算法較為有效的攻擊為時空折衷攻擊,其中應用最廣泛的事彩虹表法,對於MD5加密的信息有很多在線的破解網站可以做到。


有一些在線的解密網站,可以看看這個

分享一些免費的MD5解密網站


用這種網站cmd5.la


查找碰撞值


接觸過一些類似的內容,說說方案。

1.首選md5 32是否安全?

我想回答說,如果是用於密碼的安全存儲,那就是很不安全。為什麼呢?一段32位長的結果是依賴於密碼的內容的,如果密碼只是123123你感覺這樣有意義嗎?這是其一。

其二,目前的一些組織機構已經利用集群運算窮舉到n位後的結果集。常用的可用於密碼使用的有含義的md5已經被全部窮舉。當然,目前幾個最牛的結果集一定是國家級的項目了。

2.如何破解?

方案一、花點錢到提供相關服務的網站上,只要原文內容不長,很容易破解。百度一下一堆。

方案二、如果多花點錢,買上幾百台機器構建一個hadoop集群,設定一定的演算法讓機器自動生成,即反向窮舉。當然這個方案需要設備人員還有時間。適用於大批量的加密破解。

3.如何保存安全?

如果是密碼的話可採用多輪加鹽法。即一輪md5後在特定的位置插入一個打散字元串,再利用另一種摘要演算法來一輪。這樣三到五輪可基本保證安全。


彩虹表,沒有之一。


推薦閱讀:

怎樣在 Mac 上查看文件的 MD5 值?
md5 編碼可以反編碼出來么?就是已經知道生成的 md5 編碼,反推源文件
MD5校驗會有極低的碰撞率,那麼經過MD5之後產生的16個位元組再次進行MD5運算會不會進一步降低碰撞率?
MD5 加密不是單向的嗎? 那為什麼網上還有在線 MD5 破解呢?
先用md5,再用sha1,這樣密碼會安全一點嗎?

TAG:MD5 | 哈希函數 |