很多初學者會問:MD5 是通過演算法計算出來的,為什麼不能寫一個反向演算法把密文還原成明文?這觸及了哈希函數的核心數學特性——單向性。
首先澄清概念:MD5 是哈希函數(雜湊函數),不是加密演算法。加密是可逆的(有密鑰可解密),哈希是單向的:任意長度輸入 → 固定長度(128 位)輸出,過程不可逆。
即便知道每一步運算邏輯(位移、異或、加法模 2^32),因為:
系統存儲 MD5(password),用戶登錄時重新計算輸入密碼的 MD5 比對。同樣輸入必得同樣輸出,這就是哈希的決定性特徵。彩虹表、字典攻擊利用的是「常見密碼空間小」,而非演算法可逆。
推薦觀看 Youku 視頻《可數數、無窮映射的勢以及圖靈的可計算數》,從計算理論與數學基礎深度理解為什麼單向函數存在。