Generate the MD5 Checksum for a File in Java – 在Java中为文件生成MD5校验和

最后修改: 2022年 9月 6日

中文/混合/英文(键盘快捷键:t)

1. Overview

1.概述

A checksum is a sequence of characters used to uniquely identify a file. It is most commonly used to verify if a copy of a file is identical to an original.

校验和是一个用于唯一识别文件的字符序列。它最常用于验证一个文件的副本是否与原始文件相同。

In this short tutorial, we’ll see how to generate the MD5 checksum for a file in Java.

在这个简短的教程中,我们将看到如何在Java中为一个文件生成MD5校验和

2. Use MessageDigest Class

2.使用MessageDigest

We can easily use the MessageDigest class in the java.security package to generate the MD5 checksum for a file:

我们可以轻松地使用java.security包中的MessageDigest类来生成文件的MD5校验和。

byte[] data = Files.readAllBytes(Paths.get(filePath));
byte[] hash = MessageDigest.getInstance("MD5").digest(data);
String checksum = new BigInteger(1, hash).toString(16);

3. Use Apache Commons Codec

3.使用Apache Commons Codec

We can also use the DigestUtils class from the Apache Commons Codec library to achieve the same goal.

我们还可以使用Apache Commons Codec库中的DigestUtils类来实现同样的目标。

Let’s add a dependency to our pom.xml file:

让我们在我们的pom.xml文件中添加一个依赖项。

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version>
</dependency>

Now, we simply use the md5Hex() method to get the MD5 checksum of our file:

现在,我们只需使用md5Hex()方法来获取我们文件的MD5校验和。

try (InputStream is = Files.newInputStream(Paths.get(filePath))) {
    String checksum = DigestUtils.md5Hex(is);
    // ....
}

Let’s not forget to use try-with-resources so that we don’t have to worry about closing streams.

我们不要忘记使用try-with-resources,这样我们就不必担心关闭流。

4. Use Guava

4.使用番石榴

Finally, we can use the hash() method of a Guava‘s ByteSource object:

最后,我们可以使用GuavaByteSource对象的hash()方法。

File file = new File(filePath);
ByteSource byteSource = com.google.common.io.Files.asByteSource(file);
HashCode hc = byteSource.hash(Hashing.md5());
String checksum = hc.toString();

5. Conclusion

5.总结

In this quick tutorial, we’ve shown different ways to generate the MD5 checksum for a file in Java.

在这个快速教程中,我们展示了在Java中生成文件的MD5校验和的不同方法

As always, the example code from this article can be found over on GitHub.

一如既往,本文中的示例代码可以在GitHub上找到over