MD5 加密不是單向的嗎? 那為什麼網上還有在線 MD5 破解呢?
MD5密碼的演算法是固定的公式么?
MD5隻是哈希演算法,算不得嚴格意義上的加密演算法。
每個字元串都有個唯一的哈希值相對應(不絕對,有重複,發生重複了就叫哈希衝突。這是評價哈希演算法好壞的重要指標。)。用哈希值反推原字元串理論上是不可能的,但是卻可以用窮舉法。可以事先窮舉出一個字典,從字典中直接用哈希值反查原字元串,這樣可以加快反推的速度。網上的在線破解一般就是用的這樣一個字典。 事實上除了比較常見的或者比較弱的密碼,反查的難度是很大的。
一般資料庫系統使用MD5保存密碼,目的只是防止管理員肉眼一看就把密碼看去了。那些有「找回密碼」功能的網站基本上可以斷定它們用明文保存了密碼;密文保存的應該是通過一定驗證機制讓用戶重設密碼。
MD5還可以做為校驗碼用來檢查文件的正確性,檢查有沒有被篡改數據,以及用於存儲系統中查找重複數據等。
真正的加密演算法是DES、RC4、RSA、DSA、AES等,它們分為對稱和非對稱,我這裡只提到一下,具體可以問Google。銀行系統就是用的AES。它們是「不保存密碼」的,一旦密碼丟失想還原出原文難度很大。
加密演算法和哈希相結合還產生出身份認證機制。像https、U盾等就是通過這樣的機制保證數據的私密性和完整性,用來在公共網路中確認對方身份,確保數據在公共網路中不被人監聽和篡改(即使別人截獲了你的數據,他也不可能在短時間內破解;而且如果數據被篡改,通過哈希就可以發現)。
MD5是一個散列函數,如果直接把密碼做MD5(這是一個公開且穩定的演算法),別人得到結果之後,是可以暴力破解的。
很多時候,暴力破解本來不算是可破解的,但是,如果直接利用用戶輸入的字元進行MD5,就不一樣了。用戶的可能輸入字元組合相對於隨機的字元組合來說非常集中,也就是信息熵其實很低:比如,有一些密碼組合會被很多人使用,例如123456,password等,只有很少數的人在非常重要的地方使用機器產生出來的(偽)隨機字元串(如系統管理員)。
黑客們破譯這類密碼的一些辦法就是利用一些數據(比如一些實際的用戶密碼錶)和規則(比如把短的密碼組合成長的),然後用程序把很有可能是人工設置的密碼進行嘗試,從而從MD5值還原出一些密碼。
更直接的,把能收集到的真實密碼及其MD5值做成查找表,就變成所謂的彩虹表了。由於以上所說的原因,這樣的反查表並不大,也就能破解不少密碼了。彩虹表
網上的破解,個人覺得是字典比對,有一個資料庫,存儲了很多k-v.
當這個資料庫的數據達到一定量級的時候,很多密碼其實包含在裡面了,
直接找到就行了。彩虹表 cmd5.la
可以用使用GPU暴力遍歷咯,運氣好能出來。一些網站比如cmd5,ttmd5預先將比較簡單的字元串生成md5保存到資料庫中,也有一定的概率能破解出來。
推薦看一下百度百科。這個密鑰是固定的。所以可以通過窮舉一部分來解決一部分密文的查詢。 也有其他方法破解
推薦閱讀:
※先用md5,再用sha1,這樣密碼會安全一點嗎?
※為什麼現在網上有很多軟體可以破解MD5,但MD5還是很流行?
※有哪些值得推薦的 MD5 在線解密網站?