MD5简介:
相信大家对于“MD5加密”这个词都比较耳熟,即使很多人并没有使用过,但总是听人提起,那么究竟什么是MD5呢?
MD5:
信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,其可以产生出一个128位(16字节)的散列值(即哈希值)
主要用途:
MD5由MD4、MD3、MD2改进而来,主要增强算法复杂度和不可逆性。MD5算法因其普遍、稳定、快速的特点,仍广泛应用于普通数据的加密保护领域
应用举例:
MD5较为常用的一处便在于用户的进行登录操作时,用户的登录信息可以被保护和隐藏起来,即使是开发人员也无法直接查看被加密的原文(虽然可以进行暴力破解),用户只在每次登录时,将登录信息进行加密并与数据库中已保存的登录信息进行比对,即可完成用户的登录验证
以下是java中比较常见的几种MD5加密方法
对字符串
public static String MD5Encode(String sourceString) {
String resultString = null;
try {
resultString = new String(sourceString);
MessageDigest md = MessageDigest.getInstance("MD5");
resultString = byte2hexString(md.digest(resultString.getBytes()));
} catch (Exception ex) {
}
return resultString;
}
对数组
/**
* 以字符串形式显示字节数组内容
*/
public static final String byte2hexString(byte[] bytes) {
StringBuffer buf = new StringBuffer(bytes.length * 2);
for (int i = 0; i < bytes.length; i++) {
if (((int) bytes[i] & 0xff) < 0x10) {
buf.append("0");
}
buf.append(Long.toString((int) bytes[i] & 0xff, 16));
}
return buf.toString();
}
对文件
public static String getMD5(File file) throws Exception {
FileInputStream in = new FileInputStream(file);
FileChannel ch = in.getChannel();
MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length());
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(byteBuffer);
return byte2hexString(md.digest());
}