Md5加密

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
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值