package test; import java.security.MessageDigest; /** * Created by LDX on 2018/4/4. */ public class MD5 { public static String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(""); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); } /** * 解析 * * @param hexString * @return */ public static byte[] hexStringToBytes(String hexString) { if (hexString == null || hexString.equals("")) { return null; } hexString = hexString.toUpperCase(); int length = hexString.length() / 2; char[] hexChars = hexString.toCharArray(); byte[] d = new byte[length]; for (int i = 0; i < length; i++) { int pos = i * 2; d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); } return d; } /** * 将指定byte数组以16进制的形式打印到控制台 * * @param b */ public static void printHexString(byte[] b) { for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } System.out.print(hex.toUpperCase()); } } /** * Convert char to byte * * @param c char * @return byte */ private static byte charToByte(char c) { return (byte) "0123456789abcdef".indexOf(c); } /** * 加密 * * @param str * @return */ public static String encode(String str) { String strDigest = ""; try { // 此 MessageDigest 类为应用程序提供信息摘要算法的功能,必须用try,catch捕获 MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] data; data = md5.digest(str.getBytes("utf-8"));// 转换为MD5码 strDigest = bytesToHexString(data); } catch (Exception ex) { throw new RuntimeException(ex); } return strDigest; } }
MD5完整版的加密
最新推荐文章于 2023-03-30 13:45:28 发布