标签:
任何数据(也包括软件),经过MD5加密后,会生成一串16字节的字符串,中华人民一般称其为“MD5值”。
MD5在论坛上、软件发布时经常用,是为了保证文件的正确性,防止一些人盗用程序,加些木马或者篡改版权,设计的一套验证系统。每个文件都可以用MD5验证程序算出一个固定的MD5码来。软件作者往往会事先计算出他的程序的MD5码并帖在网上。因此,在网上看到某个程序下载旁注明了MD5码时,可以把它记下来,下载了这个程序后用MD5验证程序计算你所下载的文件的MD5码,和你之前记下MD5码比较,就知道你下的是不是原版了,如果两者相同,那么你所下载的是原版。如果计算出来的和网上注明的不匹配,那么你下载的这个文件不完整,或是被别人动过手脚。
> 计算字符串或文件的特征码(数字指纹), 不可逆, 因为任何文件或字符串算出来的md5都是32位! > 数据库: 123456->e10adc3949ba59abbe56e057f20f883e > 654321->e10adc3949ba59abbe56e057f20f883e > 在线破解网站: http://www.cmd5.com/ > 对MD5进行"加盐"处理, 增强安全性
http://www.blogjava.net/heyang/archive/2010/11/28/339233.html > MD5(password)->MD5(password + 用户昵称 + 用户id...)
public class MD5Utils {
/**
* md5加密
*
* @param password
* @return
*/
public static String encode(String password) {
try {
MessageDigest instance = MessageDigest.getInstance("MD5");// 获取MD5算法对象
byte[] digest = instance.digest(password.getBytes());// 对字符串加密,返回字节数组
StringBuffer sb = new StringBuffer();
for (byte b : digest) {
int i = b & 0xff;// 获取字节的低八位有效值
String hexString = Integer.toHexString(i);// 将整数转为16进制
if (hexString.length() < 2) {
hexString = "0" + hexString;// 如果是1位的话,补0
}
sb.append(hexString);
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
// 没有该算法时,抛出异常, 不会走到这里
}
return "";
}
}
标签:
原文地址:http://www.cnblogs.com/liuyu0529/p/4920557.html