MD5.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package com.tencent.common;
  2. import java.security.MessageDigest;
  3. /**
  4. * User: rizenguo
  5. * Date: 2014/10/23
  6. * Time: 15:43
  7. */
  8. public class MD5 {
  9. private final static String[] hexDigits = {"0", "1", "2", "3", "4", "5", "6", "7",
  10. "8", "9", "a", "b", "c", "d", "e", "f"};
  11. /**
  12. * 转换字节数组为16进制字串
  13. * @param b 字节数组
  14. * @return 16进制字串
  15. */
  16. public static String byteArrayToHexString(byte[] b) {
  17. StringBuilder resultSb = new StringBuilder();
  18. for (byte aB : b) {
  19. resultSb.append(byteToHexString(aB));
  20. }
  21. return resultSb.toString();
  22. }
  23. /**
  24. * 转换byte到16进制
  25. * @param b 要转换的byte
  26. * @return 16进制格式
  27. */
  28. private static String byteToHexString(byte b) {
  29. int n = b;
  30. if (n < 0) {
  31. n = 256 + n;
  32. }
  33. int d1 = n / 16;
  34. int d2 = n % 16;
  35. return hexDigits[d1] + hexDigits[d2];
  36. }
  37. /**
  38. * MD5编码
  39. * @param origin 原始字符串
  40. * @return 经过MD5加密之后的结果
  41. */
  42. public static String MD5Encode(String origin) {
  43. String resultString = null;
  44. try {
  45. resultString = origin;
  46. MessageDigest md = MessageDigest.getInstance("MD5");
  47. resultString = byteArrayToHexString(md.digest(resultString.getBytes("utf-8")));
  48. } catch (Exception e) {
  49. e.printStackTrace();
  50. }
  51. return resultString;
  52. }
  53. }