Maison >développement back-end >C++ >Comment calculer le hachage MD5 d'un fichier en C ?

Comment calculer le hachage MD5 d'un fichier en C ?

DDD
DDDoriginal
2024-11-11 17:38:03543parcourir

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

Obtenir le hachage MD5 à partir d'un fichier en C : un guide étape par étape

En C, calculer le hachage MD5 d'un fichier est une tâche cruciale pour la vérification de l’intégrité des données et la transmission sécurisée. Pour simplifier ce processus, plongeons dans une implémentation pratique.

Étape 1 : Créer un lien vers la bibliothèque OpenSSL

Pour cette implémentation, vous aurez besoin de la bibliothèque OpenSSL, qui fournit l'algorithme de hachage MD5. Utilisez la ligne suivante lors de la compilation :

gcc md5.c -o md5 -lssl

Étape 2 : Définir le hachage MD5

Déclarez un tableau pour stocker la valeur de hachage MD5 :

unsigned char result[MD5_DIGEST_LENGTH];

Étape 3 : Ouvrez le fichier et obtenez sa taille

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

Étape 4 : Mappez le fichier en mémoire

À traitez efficacement les fichiers volumineux, mappez le contenu du fichier en mémoire à l'aide de mmap() :

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

Étape 5 : Calculez le hachage MD5

Utilisez la fonction MD5() pour calculer la valeur de hachage du tampon de fichier mappé :

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

Étape 6 : Imprimer le hachage MD5

Afficher le hachage MD5 calculé sous forme de chiffres hexadécimaux :

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

Extrait de code complet :

#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[]){ ... }

Ce code vous donne une implémentation complète pour calculer le hachage MD5 des fichiers en C.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn