MD5加密

MD5加密 - 雲代碼 http://yuncode.net/code/c_50b460ae6791910

 

 

  1. import java.security.MessageDigest;  
  2.  
  3. /**  
  4.  * 對密碼進行加密和驗證的程序  
  5.  */ 
  6. public class Password {  
  7.  
  8.     /** 十六進制下數字到字符的映射數組 */ 
  9.     private final static String[] hexDigits = { "0""1""2""3""4""5",  
  10.             "6""7""8""9""a""b""c""d""e""f" };  
  11.  
  12.     /**  
  13.      * 把inputString加密。  
  14.      *   
  15.      * @param inputString  
  16.      *            待加密的字符串  
  17.      * @return  
  18.      */ 
  19.     public static String createPassword(String inputString) {  
  20.         return encodeByMD5(inputString);  
  21.     }  
  22.  
  23.     /**  
  24.      * 驗證輸入的密碼是否正確  
  25.      *   
  26.      * @param password  
  27.      *            真正的密碼(加密後的真密碼)  
  28.      * @param inputString  
  29.      *            輸入的字符串  
  30.      * @return  
  31.      */ 
  32.     public static boolean authenticatePassword(String password,  
  33.             String inputString) {  
  34.         if (password.equals(encodeByMD5(inputString))) {  
  35.             return true;  
  36.         } else {  
  37.             return false;  
  38.         }  
  39.     }  
  40.  
  41.     /**  
  42.      * 對字符串進行MD5編碼  
  43.      *   
  44.      * @param originString  
  45.      * @return  
  46.      */ 
  47.     private static String encodeByMD5(String originString) {  
  48.         if (originString != null) {  
  49.             try {  
  50.                 MessageDigest md = MessageDigest.getInstance("MD5");  
  51.                 byte[] results = md.digest(originString.getBytes());  
  52.                 String resultString = byteArrayToHexString(results);  
  53.                 return resultString.toUpperCase();  
  54.             } catch (Exception ex) {  
  55.                 ex.printStackTrace();  
  56.             }  
  57.         }  
  58.         return null;  
  59.     }  
  60.  
  61.     /**  
  62.      * 轉換字節數組爲16進制字串  
  63.      *   
  64.      * @param b  
  65.      *            字節數組  
  66.      * @return 十六進制字串  
  67.      */ 
  68.     private static String byteArrayToHexString(byte[] b) {  
  69.         StringBuffer resultSb = new StringBuffer();  
  70.         for (int i = 0; i < b.length; i++) {  
  71.             resultSb.append(byteToHexString(b[i]));  
  72.         }  
  73.         return resultSb.toString();  
  74.     }  
  75.  
  76.     /**  
  77.      * 將一個字節轉化成16進制形式的字符串  
  78.      *   
  79.      * @param b  
  80.      * @return  
  81.      */ 
  82.     private static String byteToHexString(byte b) {  
  83.         int n = b;  
  84.         if (n < 0)  
  85.             n = 256 + n;  
  86.         int d1 = n / 16;  
  87.         int d2 = n % 16;  
  88.         return hexDigits[d1] + hexDigits[d2];  
  89.     }  
  90.  
  91.     public static void main(String[] args) {  
  92.         String password = Password.createPassword("888888");  
  93.         System.out.println("對888888用MD5摘要後的字符串:" + password);  
  94.         String inputString = "8888";  
  95.         System.out.println("8888與密碼匹配?" 
  96.                 + Password.authenticatePassword(password, inputString));  
  97.         inputString = "888888";  
  98.         System.out.println("888888與密碼匹配?" 
  99.                 + Password.authenticatePassword(password, inputString));  
  100.     }  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章