一:百科
Hash为哈希,哈希算法是把任意长度的数据通过散列算法变换成固定长度的消息摘要。常见的算法有MD5、SHA-512、SHA-256等。
二:目的
验证原始数据的完整性,验证文件是否被篡改,也可根据hash值判断是不是上传了同样的文件。
三:测试结果
四:代码
public static String generateHash(String filePath, String algorithm) throws Exception {
MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
try (FileInputStream fileIn = new FileInputStream(filePath)) {
byte[] byteArray = new byte[1024];
int bytesCount;
// 循环读取数据
while ((bytesCount = fileIn.read(byteArray)) != -1) {
messageDigest.update(byteArray, 0, bytesCount);
}
}
byte[] bytes = messageDigest.digest();
StringBuilder stringBuilder = new StringBuilder();
for (byte b : bytes) {
stringBuilder.append(String.format("%02x", b));
}
return stringBuilder.toString();
}