如何在Java中生成檔案的MD5校驗和?


校驗和是一系列加密的字元序列,它是在MD5和SHA-1等各種雜湊演算法的幫助下生成的。校驗和適用於可下載檔案。無論何時我們為檔案生成校驗和,只要檔案不發生更改或損壞,它都保持不變。在本文中,我們將探討MD5校驗和,它是一個用於驗證檔案完整性的雜湊值。這是一種確保下載或傳輸的檔案與原始檔案完全相同的方法。要使用Java生成檔案的MD5校驗和,我們可以使用內建的java.security.MessageDigest類。

用於生成檔案MD5校驗和的Java程式

在開始討論示例程式之前,有必要了解一些我們將用於生成MD5校驗和的概念。

MessageDigest類

讓我們從用於將輸入轉換為另一個加密值的雜湊方法開始,這個返回值稱為訊息摘要或雜湊值。在Java中,我們有一個名為MessageDigest的類,它處理MD5等訊息摘要演算法。

要使用此類,我們需要使用以下命令匯入它

import java.security.MessageDigest;

MessageDigest的方法

  • getInstance():它接受一個字串形式的引數,指定訊息摘要演算法的名稱。它返回MessageDigest類的例項以及給定的演算法。

  • update():它接受一個位元組陣列,表示來自檔案的資訊,並將其傳遞給MessageDigest類的例項。

  • digest():此方法與MessageDigest類的例項一起使用,並生成位元組陣列形式的訊息摘要。

示例

以下示例演示瞭如何生成檔案MD5校驗和的實際實現。

方法

  • 首先,匯入所需的包,以便我們可以使用FileInputStream和MessageDigest類。

  • 在main方法內部,定義一個try塊來處理所需的操作。在此塊內,透過將“MD5”演算法作為引數建立MessageDigest類的例項。

  • 然後,提供需要為其生成校驗和的檔案的路徑。

  • 使用“update()”方法將檔案資訊新增到MessageDigest例項中。

  • 現在,使用“digest()”方法生成校驗和並將其儲存在位元組陣列中。

  • 建立StringBuilder類的例項以儲存從位元組陣列轉換的雜湊值。

  • 使用for-each迴圈遍歷整個位元組陣列並將其轉換為十六進位制字串。

  • 接下來,將StringBuilder轉換為字串並列印它。

import java.io.*;
import java.security.*;
public class MD5Example {
   public static void main(String[] args) {
      try {
         // Creating an instance of MessageDigest with MD5 
         MessageDigest mdgst = MessageDigest.getInstance("MD5");
         // Creating an instance of FileInputStream 
         FileInputStream fistrm = new FileInputStream("D:/Java Programs/myTextfile.txt");
         // Updating the message digest with the file bytes
         mdgst.update(fistrm.readAllBytes());
         // generating checksum in the form of byte array
         byte[] hash = mdgst.digest();
         // converting byte array into hexadecimal string
         StringBuilder sbstr = new StringBuilder(); 
         // loop to iterate through hash value
         for (byte value : hash) {
            // appending value to the StringBuilder
            sbstr.append(String.format("%02x", value));
         }
         // converting StringBuilder into string
         String hex = sbstr.toString();
         // printing hexadecimal string
         System.out.println("The generated MD5 checksum of given file: " + hex);
	     // to handle the exception if any
      } catch (NoSuchAlgorithmException | IOException exp) {
         System.out.println(exp);
      }
   }
}

輸出

The generated MD5 checksum of given file: 239fa62210aa38f502f04f4008211e64

結論

在本文中,我們學習了什麼是校驗和及其在檔案安全中的作用。此外,我們發現了Java的MessageDigest類,它提供MD5訊息摘要演算法來透過生成校驗和來驗證指定檔案。最後,我們討論了一個Java程式,向我們展示瞭如何為檔案生成MD5校驗和。

更新於: 2023年7月20日

478 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.