MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,能够将任意长度的数据映射为128位(16字节)的哈希值。它常用于校验数据完整性、密码存储等场景。
Java通过MessageDigest
类提供MD5加密功能:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Example {
public static String md5(String input) {
try {
// 创建MessageDigest实例,指定MD5算法
MessageDigest md = MessageDigest.getInstance("MD5");
// 添加要计算摘要的字节
md.update(input.getBytes());
// 获取哈希值字节数组
byte[] digest = md.digest();
// 将字节数组转换为十六进制字符串
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(String.format("%02x", b & 0xff));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
String original = "Hello World";
System.out.println("MD5 hash: " + md5(original));
}
}
PHP内置了md5()
函数,使用更为简单:
<?php
$original = "Hello World";
$hash = md5($original);
echo "MD5 hash: " . $hash;
?>
md5()
函数更为简单直接MD5存在以下安全问题:
更安全的替代方案:
问题1:Java和PHP生成的MD5值不同
问题2:性能问题
问题3:MD5已被弃用警告