package demo;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
public class MD5Digest {
public static String digest(String message){
try {
MessageDigest md=MessageDigest.getInstance("MD5");
//加密后返回新的数组
byte[] buf=md.digest(message.getBytes());
//加密后返回128位的数据 16字节*8=128位
System.out.println("原始二进制密文:"+Arrays.toString(buf)+" 长度"+buf.length);
//转换后返回16进制的数据 一个字节2个16进制的数据
StringBuilder sb=new StringBuilder();
for(int i=0;i<buf.length;i++){
String hexStr=Integer.toHexString(buf[i]&0xFF);//返回32位的数据
if(hexStr.length()==1){
hexStr="0"+hexStr;
}
sb.append(hexStr);
}
String fianlStr=sb.toString();
System.out.print("转为16进制的密文:"+fianlStr+" 长度"+fianlStr.length());
return fianlStr;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
digest("123");
System.out.println();
digest("123456");
}
}
原始二进制密文:[32, 44, -71, 98, -84, 89, 7, 91, -106, 75, 7, 21, 45, 35, 75, 112] 长度16
转为16进制的密文:202cb962ac59075b964b07152d234b70 长度32
原始二进制密文:[-31, 10, -36, 57, 73, -70, 89, -85, -66, 86, -32, 87, -14, 15, -120, 62] 长度16
转为16进制的密文:e10adc3949ba59abbe56e057f20f883e 长度32
网友评论