Maison >développement back-end >C++ >Comment calculer le hachage MD5 d'un fichier en 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!