MD5简介(百度百科)
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据运算为另一固定长度值。MD5加密是不可逆的,所以除了暴力破解一般逆序算法是得不到结果的。
MD5算法具有以下特点:
1.压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2.容易计算:从原数据计算出MD5值很容易。
3.抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4.强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据是非常困难的。
用Java实现MD5加密
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5 {
public static void main(String[] args) {
// 需要加密的字符串
String src = "123456";
try {
// 加密对象,指定加密方式
MessageDigest md5 = MessageDigest.getInstance("md5");
// 准备要加密的数据
byte[] b = src.getBytes();
// 加密
byte[] digest = md5.digest(b);
// 十六进制的字符
char[] chars = new char[] { '0', '1', '2', '3', '4', '5',
'6', '7' , '8', '9', 'A', 'B', 'C', 'D', 'E','F' };
StringBuffer sb = new StringBuffer();
// 处理成十六进制的字符串(通常)
for (byte bb : digest) {
sb.append(chars[(bb >> 4) & 15]);
sb.append(chars[bb & 15]);
}
// 打印加密后的字符串
System.out.println(sb);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
}
代码的运行结:
E10ADC3949BA59ABBE56E057F20F883E
试一下加密:
"我爱你"
MD5:
3464FF2F0B426774C3AAB4B8CBD82781
把这串十六进制字符发给你喜欢的人吧emmmmm(好无聊=.=)