Heim > Artikel > Backend-Entwicklung > Wie berechnet man einen MD5-Hash aus einer Datei in C?
Das Abrufen des MD5-Hashs einer Datei in C ist für Datensicherheits- und Integritätsprüfungen von entscheidender Bedeutung. In diesem Artikel untersuchen wir eine einfache C-Implementierung, die den MD5-Hash einer Datei berechnen und anzeigen kann.
Die Implementierung nutzt die OpenSSL-Bibliothek, um die MD5-Berechnungen durchzuführen. Es enthält Funktionen für:
Der Code öffnet zunächst die angegebene Datei und ordnet sie mithilfe von mmap() dem Speicher zu. Dadurch kann die Anwendung mit der Datei als Puffer im Speicher arbeiten, was eine effiziente MD5-Berechnung ermöglicht. Die Funktion MD5() berechnet dann den Hash und speichert ihn in einem vordefinierten Array.
Schließlich wandelt die Funktion print_md5_sum() den MD5-Hash in Hexadezimalziffern um und druckt sie zusammen mit dem Dateinamen aus. Dies ermöglicht eine einfache Überprüfung und einen Vergleich der Dateiintegrität.
Hier ist der Code:
#include <openssl/md5.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/mman.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> unsigned char result[MD5_DIGEST_LENGTH]; // Print the MD5 sum as hex-digits. void print_md5_sum(unsigned char *md) { int i; for (i = 0; i < MD5_DIGEST_LENGTH; i++) { printf("%02x", md[i]); } } // Get the size of the file by its file descriptor unsigned long get_size_by_fd(int fd) { struct stat statbuf; if (fstat(fd, &statbuf) < 0) exit(-1); return statbuf.st_size; } int main(int argc, char *argv[]) { int file_descript; unsigned long file_size; char *file_buffer; if (argc != 2) { printf("Must specify the file\n"); exit(-1); } printf("using file:\t%s\n", argv[1]); file_descript = open(argv[1], O_RDONLY); if (file_descript < 0) exit(-1); file_size = get_size_by_fd(file_descript); printf("file size:\t%lu\n", file_size); file_buffer = mmap(0, file_size, PROT_READ, MAP_SHARED, file_descript, 0); MD5((unsigned char *)file_buffer, file_size, result); munmap(file_buffer, file_size); print_md5_sum(result); printf(" %s\n", argv[1]); return 0; }
Das obige ist der detaillierte Inhalt vonWie berechnet man einen MD5-Hash aus einer Datei in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!