首頁 >後端開發 >C++ >如何使用 C 計算檔案的 MD5 雜湊值?

如何使用 C 計算檔案的 MD5 雜湊值?

Barbara Streisand
Barbara Streisand原創
2024-11-27 07:19:08790瀏覽

How to Calculate the MD5 Hash of a File using C  ?

在 C 中取得檔案的 MD5 雜湊

要確定檔案的 MD5 哈希,可以使用以下步驟:

第一步:建立檔案描述子並確定檔案Size

使用 open() 函數取得目標檔案的檔案描述符。隨後,利用 fstat() 函數確定檔案的大小。

步驟 2:將檔案對應到記憶體

使用 mmap() 函數將檔案對應到內存,提供唯讀存取。此映射有助於直接存取文件內容。

第 3 步:計算 MD5 雜湊

利用 OpenSSL 函式庫,呼叫 MD5() 函數來計算 MD5 雜湊檔案內容的。

第 4 步:從下列位置取消檔案映射記憶體

計算 MD5 雜湊後,使用 munmap() 函數從記憶體中取消檔案的對應。此步驟釋放檔案映射。

第 5 步:列印帶有檔案名稱的 MD5 雜湊值

顯示計算出的 MD5 雜湊值以及對應的檔案名稱以供參考。

以下 C 程式碼片段示範了此過程:

#include <openssl/md5.h>

void computeMD5(const char* filename) {
  // Establish file descriptor and determine file size
  int fd = open(filename, O_RDONLY);
  struct stat statbuf;
  fstat(fd, &statbuf);
  size_t file_size = statbuf.st_size;

  // Map file into memory
  char* file_buffer = (char*)mmap(0, file_size, PROT_READ, MAP_SHARED, fd, 0);

  // Compute MD5 hash
  unsigned char md5[MD5_DIGEST_LENGTH];
  MD5((unsigned char*)file_buffer, file_size, md5);

  // Unmap file from memory
  munmap(file_buffer, file_size);

  // Print MD5 hash with file name
  printf("MD5 hash of '%s': ", filename);
  for (int i = 0; i < MD5_DIGEST_LENGTH; i++) {
    printf("%02x", md5[i]);
  }
  printf("\n");
}

以上是如何使用 C 計算檔案的 MD5 雜湊值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn