md5介紹
1. md5簡介
md5的全稱是md5信息摘要算法(英文:MD5 Message-Digest Algorithm ),一種被廣泛使用的密碼散列函數(shù)陆爽,可以產(chǎn)生一個128位(16字節(jié),1字節(jié)8位)的散列值(常見的是用32位的16進制表示别威,比如:0caa3b23b8da53f9e4e041d95dc8fa2c)贡必,用于確保信息傳輸?shù)耐暾恢隆?/p>
2. md5原理
md5將整個文件當(dāng)做一個大文本信息庸毫,通過不可逆的字符串變換算法,產(chǎn)生一個唯一的MD5信息摘要飒赃。文件的md5類似于人的指紋,在世界上是獨立無二的炒事,如果任何人對文件做了任何改動蔫慧,其md5的值也就是對應(yīng)的“數(shù)字指紋”都會發(fā)生變化。
對MD5算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息姑躲,且每一分組又被劃分為16個32位子分組,經(jīng)過了一系列的處理后卖怜,算法的輸出由四個32位分組組成阐枣,將這四個32位分組級聯(lián)后將生成一個128位散列值奄抽。
md5與對稱和非對稱加密算法不同甩鳄,這兩種密碼是防止信息被竊取,而摘要算法的目標(biāo)是用于證明原文的完整性妙啃。
3. md5特性
1. 不可逆
沒有系統(tǒng)有辦法知道m(xù)d5原來的文字是什么。
2. 具有高度的離散性
md5碼具有高度的散列性茁瘦,沒有規(guī)律可循储笑,哪怕原信息只有一點點的變化,比如多個空格突倍,那么就會導(dǎo)致md5發(fā)生巨大變化,也可以說產(chǎn)生的md5碼是不可預(yù)測的焊虏。
3. 壓縮性
任意長度的數(shù)據(jù)秕磷,算出的md5值得長度都是固定的。
4. 弱碰撞性
已知原數(shù)據(jù)和其md5的值澎嚣,想找到一個具有相同md5值得數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。
4. md5的用途
- 密碼的加密存儲褥琐,用戶設(shè)置密碼時晤郑,服務(wù)端只記錄這個密碼的MD5,而不記錄密碼本身造寝,以后驗證用戶身份時,只需要將用戶輸入的密碼再次做一下MD5后褐鸥,與記錄的MD5作一個比較即可驗證其密碼的合法性赐稽。
- 數(shù)字簽名浑侥,比如發(fā)布一個程序,為了防止別人在你的程序里插入病毒或木馬寓落,你可以在發(fā)布這個程序的同時荞下,公開這個程序文件的MD5碼,這樣別人只需要在任何地方下載這個程序后做一次MD5尖昏,然后跟公開的這個MD5作一個比較就知道這個程序是否被第三方修改過抽诉。
- 文件完整性驗證迹淌,比如當(dāng)下載一個文件時唉窃,服務(wù)器返回的信息中包括這個文件的md5苟跪,在本地下載完畢時進行md5矮嫉,將兩個md5值進行比較,如果一致則說明文件完整沒有丟包現(xiàn)象。
- 文件上傳援岩,比如百度云實現(xiàn)的秒傳享怀,就是對比你上傳的文件md5在百度服務(wù)器是否已經(jīng)存在了添瓷。
5. 一些疑問
1. 同一個文件用不同的語言計算出來的md5一樣嗎坯汤?
只要算法正確搀愧,都是一樣的搓幌。
2. 拷貝的文件md5會改變嗎鼻种?
不會叉钥。
3. 還有什么其他的摘要算法么投队?
除了MD5,還有更安全的SHA-1,SHA-2(包括SHA-224碟案、SHA-256价说、SHA-384,和SHA-512 ),SHA-3狸捅,RIPEMD-160等哈希加密算法恍箭。
參考:
關(guān)于王小云破解MD5之我見 :https://blog.csdn.net/raptor/article/details/97270
MD5作用有哪些:https://blog.csdn.net/jike_yangyujing/article/details/80512205
MD5算法原理及其實現(xiàn):https://blog.csdn.net/u012611878/article/details/54000607