package org.jeecg.modules.adweb.common.util;

import java.security.MessageDigest;

public class MD5Util {

  protected static char hexDigits[] = {
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
  };

  /**
   * 将byte类型的数组转化为md5
   *
   * @param source
   * @return
   */
  public static String byte2Md5(byte[] source) {
    String md5String = "";
    try {
      MessageDigest messagedigest = MessageDigest.getInstance("MD5");
      messagedigest.update(source);
      md5String = bufferToHex(messagedigest.digest());
    } catch (Exception e) {
      e.printStackTrace();
    }
    return md5String;
  }

  private static String bufferToHex(byte bytes[]) {
    return bufferToHex(bytes, 0, bytes.length);
  }

  private static String bufferToHex(byte bytes[], int m, int n) {
    StringBuffer stringbuffer = new StringBuffer(2 * n);
    int k = m + n;
    for (int l = m; l < k; l++) {
      appendHexPair(bytes[l], stringbuffer);
    }
    return stringbuffer.toString();
  }

  private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
    char c0 = hexDigits[(bt & 0xf0) >> 4];
    char c1 = hexDigits[bt & 0xf];
    stringbuffer.append(c0);
    stringbuffer.append(c1);
  }
}
