posts - 0, comments - 77, trackbacks - 0, articles - 356
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          MD5簡介

          Posted on 2007-03-14 08:44 semovy 閱讀(208) 評論(0)  編輯  收藏 所屬分類: 其它
          所謂MD5,即"Message-Digest?Algorithm?5(信息-摘要算法)",它由MD2、MD3、MD4發(fā)展而來的一種單向函數(shù)算法(也就是HASH算法),它是國際著名的公鑰加密算法標準RSA的第一設(shè)計者R.Rivest于上個世紀90年代初開發(fā)出來的。MD5的最大作用在于,將不同格式的大容量文件信息在用數(shù)字簽名軟件來簽署私人密鑰前"壓縮"成一種保密的格式,關(guān)鍵之處在于——這種"壓縮"是不可逆的。?

          為了讓讀者朋友對MD5的應(yīng)用有個直觀的認識,筆者以一個比方和一個實例來簡要描述一下其工作過程:?

          大家都知道,地球上任何人都有自己獨一無二的指紋,這常常成為公安機關(guān)鑒別罪犯身份最值得信賴的方法;與之類似,MD5就可以為任何文件(不管其大小、格式、數(shù)量)產(chǎn)生一個同樣獨一無二的"數(shù)字指紋",如果任何人對文件做了任何改動,其MD5值也就是對應(yīng)的"數(shù)字指紋"都會發(fā)生變化。?

          我們常常在某些軟件下載站點的某軟件信息中看到其MD5值,它的作用就在于我們可以在下載該軟件后,對下載回來的文件用專門的軟件(如Windows?MD5?Check等)做一次MD5校驗,以確保我們獲得的文件與該站點提供的文件為同一文件。利用MD5算法來進行文件校驗的方案被大量應(yīng)用到軟件下載站、論壇數(shù)據(jù)庫、系統(tǒng)文件安全等方面。?

          筆者上面提到的例子只是MD5的一個基本應(yīng)用,實際上MD5還被用于加密解密技術(shù)上,如Unix、各類BSD系統(tǒng)登錄密碼(在MD5誕生前采用的是DES加密算法,后因MD5安全性更高,DES被淘汰)、通信信息加密(如大家熟悉的即時通信軟件MyIM)、數(shù)字簽名等諸多方面。

          MD5將任意長度的“字節(jié)串”變換成一個128bit的大整數(shù),并且它是一個不可逆的字符串變換算法,換句話說就是,即使你看到源程序和算法描述,也無法將一個MD5的值變換回原始的字符串,從數(shù)學(xué)原理上說,是因為原始的字符串有無窮多個,這有點象不存在反函數(shù)的數(shù)學(xué)函數(shù)。?
          MD5的典型應(yīng)用是對一段Message(字節(jié)串)產(chǎn)生fingerprint(指紋),以防止被“篡改”。舉個例子,你將一段話寫在一個叫?readme.txt文件中,并對這個readme.txt產(chǎn)生一個MD5的值并記錄在案,然后你可以傳播這個文件給別人,別人如果修改了文件中的任何內(nèi)容,你對這個文件重新計算MD5時就會發(fā)現(xiàn)(兩個MD5值不相同)。如果再有一個第三方的認證機構(gòu),用MD5還可以防止文件作者的“抵賴”,這就是所謂的數(shù)字簽名應(yīng)用。?
          MD5還廣泛用于加密和解密技術(shù)上,在很多操作系統(tǒng)中,用戶的密碼是以MD5值(或類似的其它算法)的方式保存的,?用戶Login的時候,系統(tǒng)是把用戶輸入的密碼計算成MD5值,然后再去和系統(tǒng)中保存的MD5值進行比較,而系統(tǒng)并不“知道”用戶的密碼是什么。

          所以,要遇到了md5密碼的問題,比較好的辦法是:你可以用這個系統(tǒng)中的md5()函數(shù)重新設(shè)一個密碼,如admin,把生成的一串密碼覆蓋原來的就行了。

          主站蜘蛛池模板: 舟山市| 西充县| 隆安县| 绥德县| 陈巴尔虎旗| 福鼎市| 大名县| 连州市| 沧源| 桐城市| 安顺市| 元江| 隆尧县| 沁源县| 威海市| 汉中市| 班戈县| 布拖县| 松潘县| 丰都县| 得荣县| 方城县| 盐城市| 永清县| 改则县| 蒙阴县| 太仓市| 库车县| 九龙县| 桂东县| 乌审旗| 伊宁市| 莱西市| 青海省| 昌都县| 齐齐哈尔市| 错那县| 甘南县| 武山县| 绍兴市| 南宁市|