Java MD5 加密算法类

MD5算法是将数据进行不可逆加密的算法有较好的安全性,在国内如寿信的安全支付平台就采用此算法。Java中的MD5不像PHP等语言已经封装好了,可直接使用md5("欲加密字符")来进行加密。在Java中,必须自己来编写类似于md5("欲加密字符")的算法。

下面的Java版MD5加密算法是我在我的多个项目中都有应用到,现在晒出来跟大家分享,当然也有参考网络上的一些方法。

  1. package util; 
  2.  
  3. import java.security.MessageDigest; 
  4.  
  5. public class Encript { 
  6.     //十六进制下数字到字符的映射数组 
  7.     private final static String[] hexDigits = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}; 
  8.  
  9.     /**把inputString加密*/ 
  10.     public static String md5(String inputStr){ 
  11.         return encodeByMD5(inputStr); 
  12.     } 
  13.  
  14.     /** 
  15.     * 验证输入的密码是否正确 
  16.     * @param password 真正的密码(加密后的真密码) 
  17.     * @param inputString 输入的字符串 
  18.     * @return 验证结果,boolean类型 
  19.     */ 
  20.     public static boolean authenticatePassword(String password,String inputString){ 
  21.         if(password.equals(encodeByMD5(inputString))){ 
  22.             return true
  23.         }else
  24.             return false
  25.         } 
  26.     } 
  27.  
  28.     /**对字符串进行MD5编码*/ 
  29.     private static String encodeByMD5(String originString){ 
  30.         if (originString!=null) { 
  31.             try { 
  32.                 //创建具有指定算法名称的信息摘要 
  33.                 MessageDigest md5 = MessageDigest.getInstance("MD5"); 
  34.                 //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算 
  35.                 byte[] results = md5.digest(originString.getBytes()); 
  36.                 //将得到的字节数组变成字符串返回  
  37.                 String result = byteArrayToHexString(results); 
  38.                 return result; 
  39.             } catch (Exception e) { 
  40.                 e.printStackTrace(); 
  41.             } 
  42.         } 
  43.         return null
  44.     } 
  45.  
  46.     /** 
  47.     * 轮换字节数组为十六进制字符串 
  48.     * @param b 字节数组 
  49.     * @return 十六进制字符串 
  50.     */ 
  51.     private static String byteArrayToHexString(byte[] b){ 
  52.         StringBuffer resultSb = new StringBuffer(); 
  53.         for(int i=0;i<b.length;i++){ 
  54.             resultSb.append(byteToHexString(b[i])); 
  55.         } 
  56.         return resultSb.toString(); 
  57.     } 
  58.  
  59.     //将一个字节转化成十六进制形式的字符串 
  60.     private static String byteToHexString(byte b){ 
  61.         int n = b; 
  62.         if(n<0
  63.         n=256+n; 
  64.         int d1 = n/16
  65.         int d2 = n%16
  66.         return hexDigits[d1] + hexDigits[d2]; 
  67.     } 

调用方法为:

  1. Encript.md5("www.sunchis.com"); 
posted @ 2011-10-18 17:21  蝌蚪归来  阅读(1467)  评论(0编辑  收藏  举报