Md5加密

来源:互联网 发布:巨人网络股票代码 编辑:程序博客网 时间:2024/06/03 13:36
package md5;

/*
 * MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由
 * MIT Laboratory for Computer Science和RSA Data Security Inc的
 * Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。
 * 
 * 通过MD5加密后的密文结果是16个字节数据,并且还是各种特殊字符,
 * 通过String s = Integer.toHexString(i & 0xff); 转化为我们所熟知的16进制数,
 * 然后通过变种变成32字节数据
 */
import java.security.MessageDigest;
import org.junit.Test;

public class MD5 {
@Test
public void demo1() throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
String pwd = "1234";
String pwd2 = "";
byte b[] = md.digest(pwd.getBytes());
// System.out.println("b= "+b.length);//b= 16
// md5算法中,无论明文数据有多长,密文都是16个字节数据
for (byte i : b) {
// System.out.print(i+" ");//-127 -36 -101 -37 82 -48 77 -62 0 54
// -37 -40 49 62 -48 85
// 此处其实md5加密已经完成,可惜它生成的密文全是字节数据,不是我们通常所习惯的(看得懂的16进制的数)
String s = Integer.toHexString(i & 0xff);// 转化为我们所熟知的16进制数
// System.out.print(s + " ");// 81 dc 9b db 52 d0 4d c2 0 36 db d8
// 31
// 3e d0 55
// 如果i<16时,s只有一位,只有i>=16的i转换成s时才是两位


if (s.length() == 1) {
s = s + "0";// 变种: s=s+"F" 或 s ="1"+s 等等..
}
pwd2 = s + pwd2;
}
System.out.println(pwd2.length());// 32
System.out.print(pwd2);// 55d03e31d8db3600c24dd052db9bdc81
}
}
原创粉丝点击