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

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

DDD
DDD原創
2024-11-11 17:38:03543瀏覽

How do I Calculate the MD5 Hash of a File in C  ?

從C 語言中的檔案取得MD5 雜湊值:逐步指南

在C 語言中,計算檔案的MD5 哈希值是資料完整性驗證和安全傳輸的關鍵任務。為了簡化這個過程,讓我們深入實際的實作。

第 1 步:連結到 OpenSSL 函式庫

對於此實現,您需要 OpenSSL 函式庫,它提供MD5雜湊演算法。在編譯過程中使用以下行:

gcc md5.c -o md5 -lssl

步驟2:定義MD5 雜湊

宣告一個陣列來儲存MD5 雜湊值:

unsigned char result[MD5_DIGEST_LENGTH];

第 3步驟:開啟檔案並取得其大小

int file_descript = open(argv[1], O_RDONLY);
unsigned long file_size = get_size_by_fd(file_descript);

第4 步:將檔案對應到記憶體

要有效處理大文件,請使用mmap () 將檔案內容對應到記憶體:

file_buffer = mmap(0, file_size, PROT_READ, MAP_SHARED, file_descript, 0);

第 5步:計算MD5雜湊

使用MD5() 函數計算映射檔緩衝區的雜湊值:

MD5((unsigned char*) file_buffer, file_size, result);

第6 步:列印MD5 雜湊

將計算出的MD5雜湊值顯示為十六進位數字:

print_md5_sum(result);
printf("  %s\n", argv[1]);

完整程式碼片段:

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <openssl/md5.h>

unsigned char result[MD5_DIGEST_LENGTH];

void print_md5_sum(unsigned char* md){ ... }
unsigned long get_size_by_fd(int fd){ ... }

int main(int argc, char *argv[]){ ... }

此程式碼為您提供了在C 中計算文件MD5 哈希的全面實現。

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

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