1. 程式人生 > >MD5在java中的應用

MD5在java中的應用

JDK內建了MD5的演算法,在java.security.*包中。應用的例子如下:
  1. package com.pn.bank.util;
  2. import java.security.NoSuchAlgorithmException;
  3. publicclass MD5Util {
  4. publicstatic String getMD5(String originalString) {
  5. // 把輸入字串轉換為二進位制字串
  6. byte[] byteSource = originalString.getBytes();
  7. // 結果字串
  8.     String resultString = null;
  9. // 用於將位元組轉換成十六進位制表示的字元
  10. char hexDigits[] = { 
    '0''1''2''3''4''5''6''7''8''9',
  11. 'a''b''c''d''e''f' };
  12. try {
  13.     java.security.MessageDigest md5 = java.security.MessageDigest
  14.     .getInstance("MD5");
  15.     md5.update(byteSource);
  16. // MD5 的計算結果是一個 128 位的長整數,用位元組表示就是 16 個位元組
  17. byte tmp[] = md5.digest();
  18. // 每個位元組用 16 進製表示的話,使用兩個字元,所以表示成 16 進位制需要 32 個字元
  19. char str[] = newchar[32];
  20. // 表示轉換結果中對應的字元位置
  21. int k = 0;
  22. // 從第一個位元組開始,對 MD5 的每一個位元組轉換成 16 進位制字元的轉換
  23. for (int i = 0; i < 16; i++) {
  24. // 取第i個位元組
  25. byte byteDigit = tmp[i];
  26. // 取位元組中高四位的數字轉換,>>>為邏輯右移,將符號位一起右移
  27.     str[k++] = hexDigits[byteDigit >>> 4 & 0xf];
  28. // 取位元組中低四位的數字轉換
  29.     str[k++] = hexDigits[byteDigit & 
    0xf];
  30.     }
  31. // 轉換後的結果轉換為字串
  32.     resultString = new String(str);
  33.     } catch (NoSuchAlgorithmException e) {
  34.     e.printStackTrace();
  35.     }
  36. return resultString;
  37.     }
  38. }