Java生成MD5的方法,简单封装并转为32位小写
作者:互联网
1 import java.security.MessageDigest; 2 3 public class MD5 { 4 5 public static String toMD5(String plainText) { 6 StringBuffer buf = new StringBuffer(""); 7 try { 8 // 生成实现指定摘要算法的 MessageDigest 对象。 9 MessageDigest md = MessageDigest.getInstance("MD5"); 10 // 使用指定的字节数组更新摘要。 11 md.update(plainText.getBytes()); 12 // 通过执行诸如填充之类的最终操作完成哈希计算。 13 byte b[] = md.digest(); 14 // 生成具体的md5密码到buf数组(32位小写) 15 int i; 16 17 for (int offset = 0; offset < b.length; offset++) { 18 i = b[offset]; 19 if (i < 0){ 20 i += 256; 21 } 22 if (i < 16){ 23 buf.append("0"); 24 }else{ 25 buf.append(Integer.toHexString(i)); 26 } 27 } 28 } catch (Exception e) { 29 e.printStackTrace(); 30 } 31 return buf.toString(); 32 } 33 34 public static byte[] toMD5byte(byte[] plainText) { 35 StringBuffer buf = new StringBuffer(""); 36 try { 37 // 生成实现指定摘要算法的 MessageDigest 对象。 38 MessageDigest md = MessageDigest.getInstance("MD5"); 39 // 使用指定的字节数组更新摘要。 40 md.update(plainText); 41 // 通过执行诸如填充之类的最终操作完成哈希计算。 42 byte b[] = md.digest(); 43 // 生成具体的md5密码到buf数组 44 int i; 45 46 for (int offset = 0; offset < b.length; offset++) { 47 i = b[offset]; 48 if (i < 0) 49 i += 256; 50 if (i < 16) 51 buf.append("0"); 52 buf.append(Integer.toHexString(i)); 53 } 54 } catch (Exception e) { 55 e.printStackTrace(); 56 } 57 return buf.toString().getBytes(); 58 } 59 60 /** 61 * 解决php与javaMD5加密不同 获取MD5加密后的字符串 62 * 63 * @param str 64 * 明文 65 * @return 加密后的字符串 66 * @throws Exception 67 */ 68 public static String getMD5(String str) throws Exception { 69 /** 创建MD5加密对象 */ 70 MessageDigest md5 = MessageDigest.getInstance("MD5"); 71 /** 进行加密 */ 72 md5.update(str.getBytes("GBK")); 73 /** 获取加密后的字节数组 */ 74 byte[] md5Bytes = md5.digest(); 75 String res = ""; 76 for (int i = 0; i < md5Bytes.length; i++) { 77 int temp = md5Bytes[i] & 0xFF; 78 if (temp <= 0XF) { // 转化成十六进制不够两位,前面加零 79 res += "0"; 80 } 81 res += Integer.toHexString(temp); 82 } 83 return res; 84 } 85 }
标签:MessageDigest,md,Java,int,32,offset,buf,MD5 来源: https://www.cnblogs.com/404code/p/11248422.html