MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用於確保信息傳輸完整壹致。是計算機廣泛使用的雜湊算法之壹(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實現。
將數據(如漢字)運算為另壹固定長度值是雜湊算法的基礎原理,MD5的前身有MD2、MD3和MD4。
MD5較老,散列長度通常為128位,隨著計算機運算能力提高,找到“碰撞”是可能的。因此,在少數安全要求高的場合不使用MD5。
2004年,中國數學家王小雲證明MD5數字簽名算法可以產生碰撞[1]。2007年,Marc Stevens,Arjen K. Lenstra和Benne de Weger進壹步指出通過偽造軟件簽名,可重復性攻擊MD5算法[2]。研究者使用前綴碰撞法(chosen-prefix collision),使程序前端包含惡意程序,利用後面的空間添上垃圾代碼湊出同樣的MD5 Hash值。
2008年,荷蘭埃因霍芬技術大學科學家成功把2個可執行文件進行了MD5碰撞,使得這兩個運行結果不同的程序被計算出同壹個MD5[3],顯然這樣會為病毒大開方便之門。