日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MD5和RSA

發(fā)布時間:2025/3/16 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MD5和RSA 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ?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
  • import?java.security.MessageDigest;??
  • ??
  • public?class?TestNew?extends?Thread{??????
  • ????public?static?void?main(String[]?args)?{??
  • ????????String?srcString?=?"nextitem";??
  • ????????System.out.println("MD5加密后?=?"?+?getMD5String(srcString));??
  • ????}??
  • ??????
  • ????public?final?static?String?getMD5String(String?s)?{??
  • ????????char?hexDigits[]?=?{?'0',?'1',?'2',?'3',?'4',??
  • ????????????????'5',?'6',?'7',?'8',?'9',??
  • ????????????????'A',?'B',?'C',?'D',?'E',?'F'?};??
  • ????????try?{??
  • ????????????byte[]?btInput?=?s.getBytes();??
  • ????????????//獲得MD5摘要算法的?MessageDigest?對象??
  • ????????????MessageDigest?mdInst?=?MessageDigest.getInstance("MD5");??
  • ????????????//使用指定的字節(jié)更新摘要??
  • ????????????mdInst.update(btInput);??
  • ????????????//獲得密文??
  • ????????????byte[]?md?=?mdInst.digest();??
  • ????????????//把密文轉(zhuǎn)換成十六進制的字符串形式??
  • ????????????int?j?=?md.length;??
  • ????????????char?str[]?=?new?char[j?*?2];??
  • ????????????int?k?=?0;??
  • ????????????for?(int?i?=?0;?i?<?j;?i++)?{??
  • ????????????????byte?byte0?=?md[i];??
  • ????????????????str[k++]?=?hexDigits[byte0?>>>?4?&?0xf];??
  • ????????????????str[k++]?=?hexDigits[byte0?&?0xf];??
  • ????????????}??
  • ????????????return?new?String(str);??
  • ????????}??
  • ????????catch?(Exception?e)?{??
  • ????????????e.printStackTrace();??
  • ????????????return?null;??
  • ????????}??
  • ????}??
  • }??
  • (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é)

    以上是生活随笔為你收集整理的MD5和RSA的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。