在 groovy 中生成文件输入流的 MD5

Generating MD5 of a file inputstream in groovy

我正在尝试生成文件输入流的 md5,但我注意到生成的 md5 不同于从 运行 命令行 md5 针对磁盘上的文件生成的 md5。这是生成 md5 的正确方法吗?

DigestInputStream dis = new DigestInputStream(is, MessageDigest.getInstance('MD5')) 
println "MD5 generated from Groovy: " + dis.getMessageDigest().digest().encodeHex().toString()

DigestInputStream 计算您通过流发送的文件的摘要。由于您没有使用流,因此您正在计算一个空文件的 MD5 总和。在空文件上执行 md5sum,您将获得与从 Groovy 代码中获得的相同的总和。在两行代码之间添加 dis.eachByte {},您将获得文件的正确 MD5 和。