[Java] MD5加密 →→→→→进入此内容的聊天室

来自 , 2020-10-01, 写在 Java, 查看 119 次.
URL http://www.code666.cn/view/8c7bbbba
  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.         }
  101. }

回复 "MD5加密"

这儿你可以回复上面这条便签

captcha