MD5和RSA
? ? ?MD5和RSA是網(wǎng)絡(luò)傳輸中最常用的兩個算法,了解這兩個算法原理后就能大致知道加密是怎么一回事了。但這兩種算法使用環(huán)境有差異,剛好互補。
(1)MD5
???????? MD5(單向散列算法)的全稱是Message-Digest Algorithm 5(信息-摘要算法),經(jīng)MD2、MD3和MD4發(fā)展而來。MD5算法的使用不需要支付任何版權(quán)費用。
???????? MD5功能:輸入任意長度的信息,經(jīng)過處理,輸出為128位的信息(數(shù)字指紋);不同的輸入得到的不同的結(jié)果(唯一性);根據(jù)128位的輸出結(jié)果不可能反推出輸入的信息(不可逆)。
???????? MD5用途:
a,防止被篡改:1)比如發(fā)送一個電子文檔,發(fā)送前,我先得到MD5的輸出結(jié)果a。然后在對方收到電子文檔后,對方也得到一個MD5的輸出結(jié)果b。如果a與b一樣就代表中途未被篡改。2)比如我提供文件下載,為了防止不法分子在安裝程序中添加木馬,我可以在網(wǎng)站上公布由安裝文件得到的MD5輸出結(jié)果。3)SVN在檢測文件是否在CheckOut后被修改過,也是用到了MD5.
b,防止直接看到明文:現(xiàn)在很多網(wǎng)站在數(shù)據(jù)庫存儲用戶的密碼的時候都是存儲用戶密碼的MD5值。這樣就算不法分子得到數(shù)據(jù)庫的用戶密碼的MD5值,也無法知道用戶的密碼。當用戶登錄的時候,系統(tǒng)把用戶輸入的密碼計算成MD5值,然后再去和保存在文件系統(tǒng)中的MD5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統(tǒng)在并不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統(tǒng)的合法性。
??????? 無論在Android上還是pc上用Java實現(xiàn)MD5都比較容易,因為java已經(jīng)把它做到了java.security.MessageDigest里。下面是一個MD5Util.java類的使用
[java]?view plaincopy(2)RSA
??????? RSA是可逆的,一個字符串可以經(jīng)rsa加密后,經(jīng)加密后的字符串傳到對端如服務(wù)器上,再進行解密即可。前提是服務(wù)器知道解密的私鑰,當然這個私鑰最好不要再網(wǎng)絡(luò)傳輸。RSA的說明原理介紹,見文章http://bank.hexun.com/2009-06-24/118958531.html,RSA在JAVA中的實現(xiàn)見文章http://blog.csdn.net/yanzi1225627/article/details/26508035的下半部分。?
?
?
參考原文:http://blog.csdn.net/forgotaboutgirl/article/details/7258109
參考原文:http://blog.csdn.net/yanzi1225627/article/details/26508035
參考原文:http://bank.hexun.com/2009-06-24/118958531.html
總結(jié)
- 上一篇: hdu 2821
- 下一篇: hdu 4101(bfs+博弈)