Maison > développement back-end > C++ > le corps du texte

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

DDD
Libérer: 2024-11-11 17:38:03
original
481 Les gens l'ont consulté

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
Copier après la connexion

Étape 2 : Définir le hachage MD5

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

unsigned char result[MD5_DIGEST_LENGTH];
Copier après la connexion

É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);
Copier après la connexion

É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);
Copier après la connexion

É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);
Copier après la connexion

É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]);
Copier après la connexion

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[]){ ... }
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal