I/O及網路--MD5加密及Java的實現方式

來源:互聯網
上載者:User
 

首先
   我看到很多貼子,上面描述MD5加密解密等話題,因此寫此文章為了把MD5加密問題簡單的說個透徹,並且給大家已經實踐過的代碼。

其次
   MD5 加密並不是把原文加密,這個大家得注意,既然沒有把原文加密何來的解密呢?簡直是個笑話。MD5的用途就是把一段原文資料通過一定的演算法產生16位元組的密 文,通過這個密文我們可以檢查原文的資料是否被修改過。常用在網路中明文資料轉送,防止傳輸過程中內容被惡意修改。典型的應用協議為 radius,radius協議中有16byte就是MD5所留的,把使用者的密碼加在報文尾部進行MD5,把結果存在網路中,所以明文部分看不到使用者的密 碼,當伺服器收到此包,用同樣的方法進行MD5,如果加密出來的16byte一樣,說明是有效未被惡意修改的網路包。

最後
附上實現的代碼

  1.  
  2. import java.security.*;
  3.  
  4. public class MD5 {
  5.   /**
  6.    * MD5
  7.    *
  8.    * @author Dreamer
  9.    */
  10.   public MD5() {
  11.   }
  12.  
  13.   public static byte[] md5(byte[] in) {
  14.     MessageDigest md = null;
  15.     byte[] out = new byte[16];
  16.     try {
  17.       md = MessageDigest.getInstance("MD5");
  18.     }
  19.     catch (NoSuchAlgorithmException ex) {
  20.       System.out.println(ex.toString());
  21.     }
  22.     md.reset();
  23.     md.update(in);
  24.     out = md.digest();
  25.     return out;
  26.   }
  27.  
  28.   public static byte[] md5(byte[] in, int len) {
  29.     MessageDigest md = null;
  30.     byte[] out = new byte[16];
  31.     try {
  32.       md = MessageDigest.getInstance("MD5");
  33.     }
  34.     catch (NoSuchAlgorithmException ex) {
  35.       System.out.println(ex.toString());
  36.     }
  37.     md.reset();
  38.     md.update(in, 0, len);
  39.     out = md.digest();
  40.     return out;
  41.   }
  42.  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.