【发布时间】:2020-03-05 05:50:04
【问题描述】:
我正在尝试根据文件内容而不是文件名来计算 MD5 哈希值。在我下面的代码中,在对两个文件名不同但内容相同的文件计算 MD5 哈希时,它会生成两个不同的 MD5 哈希值。我期望相同的哈希值。
代码
def computeMD5Hash(path: String): String = {
val buffer = new Array[Byte](8192)
val md5 = MessageDigest.getInstance("MD5")
val dis = new DigestInputStream(new FileInputStream(new File(path)), md5)
try {
while (dis.read(buffer) != -1) {}
} finally {
dis.close()
}
md5.digest.map("%02x".format(_)).mkString
}
println(computeMD5Hash("/Users/xxxx/Documents/Project/yyy/de/src/main/resources/input/xxxxx_list_01.txt"))
println(computeMD5Hash("/Users/xxxx/Documents/Project/yyy/de/src/main/resources/input/xxxxx_list_03.txt"))
输出
10d34fcb95ca6714fb00dae12527be4e
651c8eaf62016182d2a39c5442a339a8
预期输出
10d34fcb95ca6714fb00dae12527be4e
10d34fcb95ca6714fb00dae12527be4e
【问题讨论】:
-
我已经完全使用了您在某些部署脚本中成功使用的功能。它是正确的。建议:尝试拨打
md5 -q /Users/xxxx/Documents/Project/yyy/de/src/main/resources/input/problem_list_01.txt。输出应与您的函数输出相匹配。