📅  最后修改于: 2023-12-03 14:52:44.853000             🧑  作者: Mango
MD5 (Message-Digest Algorithm 5) 是常用的一种哈希函数,用于将任意长度的消息压缩为一个128位的消息摘要。在Java中,可以使用java.security.MessageDigest类来生成MD5校验和。
创建一个MessageDigest实例,并指定使用MD5算法
MessageDigest md = MessageDigest.getInstance("MD5");
读取文件内容,更新MessageDigest实例
FileInputStream fileInputStream = new FileInputStream(file);
byte[] buffer = new byte[1024];
int length;
while ((length = fileInputStream.read(buffer)) != -1) {
md.update(buffer, 0, length);
}
获取生成的MD5校验和
byte[] digest = md.digest();
注意:MessageDigest对象只能计算一次摘要。
完整代码示例:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Util {
public static String getFileMD5(File file) throws NoSuchAlgorithmException, IOException {
MessageDigest md = MessageDigest.getInstance("MD5");
FileInputStream fileInputStream = new FileInputStream(file);
byte[] buffer = new byte[1024];
int length;
while ((length = fileInputStream.read(buffer)) != -1) {
md.update(buffer, 0, length);
}
fileInputStream.close();
byte[] digest = md.digest();
// 转化为16进制字符串
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
String hex = Integer.toHexString(b & 0xff);
if (hex.length() == 1) {
sb.append("0");
}
sb.append(hex);
}
return sb.toString();
}
}
在Java中生成MD5校验和其实很简单,只需要使用MessageDigest类即可。生成MD5校验和的主要用途是用来校验文件的完整性,可以用于防止文件被篡改或传输过程中出现误差。