如何獲取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 等)中的值進行比較。

還有許多其他方法可以實現相同的目標,但我們將在以後的教程中討論這一點。