1. 程式人生 > >java中的使用者名稱和密碼加密儲存到txt檔案中

java中的使用者名稱和密碼加密儲存到txt檔案中

所謂MD5,即"Message-Digest Algorithm 5(資訊-摘要演算法)",它由MD2、MD3、MD4發展而來的一種單向函式演算法(也就是HASH演算法),它是國際著名的公鑰加密演算法標準RSA的第一設計者R.Rivest於上個世紀90年代初開發出來的。MD5的最大作用在於,將不同格式的大容量檔案資訊在用數字簽名軟體來簽署私人金鑰前"壓縮"成一種保密的格式,關鍵之處在於——這種"壓縮"是不可逆的。 
為了讓讀者朋友對MD5的應用有個直觀的認識,筆者以一個比方和一個例項來簡要描述一下其工作過程: 
大家都知道,地球上任何人都有自己獨一無二的指紋,這常常成為公安機關鑑別罪犯身份最值得信賴的方法;與之類似,MD5就可以為任何檔案(不管其大小、格式、數量)產生一個同樣獨一無二的"數字指紋",如果任何人對檔案做了任何改動,其MD5值也就是對應的"數字指紋"都會發生變化。 

我們常常在某些軟體下載站點的某軟體資訊中看到其MD5值,它的作用就在於我們可以在下載該軟體後,對下載回來的檔案用專門的軟體(如Windows MD5 Check等)做一次MD5校驗,以確保我們獲得的檔案與該站點提供的檔案為同一檔案。利用MD5演算法來進行檔案校驗的方案被大量應用到軟體下載站、論壇資料庫、系統檔案安全等方面。 
筆者上面提到的例子只是MD5的一個基本應用,實際上MD5還被用於加密解密技術上,如Unix、各類BSD系統登入密碼(在MD5誕生前採用的是DES加密演算法,後因MD5安全性更高,DES被淘汰)、通訊資訊加密(如大家熟悉的即時通訊軟體MyIM)、數字簽名等諸多方面。 
MD5將任意長度的“位元組串”變換成一個128bit的大整數,並且它是一個不可逆的字串變換演算法,換句話說就是,即使你看到源程式和演算法描述,也無法將一個MD5的值變換回原始的字串,從數學原理上說,是因為原始的字串有無窮多個,這有點象不存在反函式的數學函式。 

MD5的典型應用是對一段Message(位元組串)產生fingerprint(指紋),以防止被“篡改”。舉個例子,你將一段話寫在一個叫 readme.txt檔案中,並對這個readme.txt產生一個MD5的值並記錄在案,然後你可以傳播這個檔案給別人,別人如果修改了檔案中的任何內容,你對這個檔案重新計算MD5時就會發現(兩個MD5值不相同)。如果再有一個第三方的認證機構,用MD5還可以防止檔案作者的“抵賴”,這就是所謂的數字簽名應用。 
MD5還廣泛用於加密和解密技術上,在很多作業系統中,使用者的密碼是以MD5值(或類似的其它演算法)的方式儲存的, 使用者Login的時候,系統是把使用者輸入的密碼計算成MD5值,然後再去和系統中儲存的MD5值進行比較,而系統並不“知道”使用者的密碼是什麼。 

Java程式碼