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 ?

Barbara Streisand
Libérer: 2024-11-27 07:19:08
original
853 Les gens l'ont consulté

How to Calculate the MD5 Hash of a File using C  ?

Obtention du hachage MD5 d'un fichier en C

Pour déterminer le hachage MD5 d'un fichier, on peut utiliser les étapes suivantes :

Étape 1 : Établir le descripteur de fichier et déterminer le fichier Taille

À l'aide de la fonction open(), obtenez un descripteur de fichier pour le fichier cible. Ensuite, utilisez la fonction fstat() pour déterminer la taille du fichier.

Étape 2 : Mapper le fichier en mémoire

Utilisez la fonction mmap() pour mapper le fichier dans mémoire, offrant un accès en lecture seule. Ce mappage facilite l'accès direct au contenu du fichier.

Étape 3 : Calculer le hachage MD5

À l'aide de la bibliothèque OpenSSL, invoquez la fonction MD5() pour calculer le hachage MD5 du contenu du fichier.

Étape 4 : Démapper le fichier de Mémoire

Une fois le hachage MD5 calculé, utilisez la fonction munmap() pour démapper le fichier de la mémoire. Cette étape libère le mappage de fichiers.

Étape 5 : Imprimer le hachage MD5 avec le nom de fichier

Affichez le hachage MD5 calculé ainsi que le nom de fichier correspondant pour référence.

L'extrait de code C suivant illustre ce processus :

#include <openssl/md5.h>

void computeMD5(const char* filename) {
  // Establish file descriptor and determine file size
  int fd = open(filename, O_RDONLY);
  struct stat statbuf;
  fstat(fd, &statbuf);
  size_t file_size = statbuf.st_size;

  // Map file into memory
  char* file_buffer = (char*)mmap(0, file_size, PROT_READ, MAP_SHARED, fd, 0);

  // Compute MD5 hash
  unsigned char md5[MD5_DIGEST_LENGTH];
  MD5((unsigned char*)file_buffer, file_size, md5);

  // Unmap file from memory
  munmap(file_buffer, file_size);

  // Print MD5 hash with file name
  printf("MD5 hash of '%s': ", filename);
  for (int i = 0; i < MD5_DIGEST_LENGTH; i++) {
    printf("%02x", md5[i]);
  }
  printf("\n");
}
Copier après la connexion

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal