如何获取Java中任何给定文件的MD5校验和? 如何使用 Apache Common 的 DigestUtils.md5Hex 实用程序?

已发表: 2021-08-28
如何获取Java中任何给定文件的MD5校验和?使用 commons-codec 的 DigestUtils.md5Hex

加强企业应用程序的安全性是任何组织面临的最大挑战。

考虑这个实际的生产场景:

  1. 您有一个从文件中reads the value的应用程序
  2. 根据文件值,它performs some operations ,如添加/删除/执行
  3. 您已在生产环境中部署此应用程序
  4. 如果某些unauthorized person在您不知情的情况下changes the value怎么办?
  5. 您的应用程序simply gets new value并运行可能导致unexpected outcome的逻辑
  6. 如果您可能为该文件启用了 MD5 校验和 - 您could have created an exception ,并且you could have prevented disaster或意外结果

什么是 MD5 校验和?

文件的 MD5 校验和是128-bit value ,类似于文件的指纹。 它可用于比较文件及其完整性控制。

为不同的文件获得相同的值几乎是不可能的。 在本教程中,我们将创建简单的 Java 程序,该程序为给定文件创建并返回 MD5 值。 在我们的例子中,它是index.php文件。

让我们开始吧:

第1步

创建公共类CrunchifyGetMD5ForFile.java

第2步

将以下两个 maven 依赖项导入项目的pom.xml文件。 将项目转换为 Maven 项目的教程。

我们正在使用commons-codeccommons-io库。

第三步

使用DigestUtils.md5Hex实用程序创建 MD5 校验和并在控制台上打印结果。

DigestUtils.md5Hex => encodeHex 实现

这是一个完整的程序。

创建类 crunchifyGetMd5ForFile.java

只需将上述程序作为 Java 应用程序运行,您将看到与此类似的结果。

IntelliJ IDEA 控制台结果:

您将如何在运行时使用此 MD5 校验和来验证文件完整性?

您可以在运行时将此 MD5 校验和与存储在您的数据库(如 MySQL、Oracle 等)中的值进行比较。

还有许多其他方法可以实现相同的目标,但我们将在以后的教程中讨论这一点。