begin process at 2012 05 27 19:53:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > HASH MD5 D'UNE CHAINE OU D'UN FICHIER (DE TAILLE QUELCONQUES) {VC++ 7.0}

HASH MD5 D'UNE CHAINE OU D'UN FICHIER (DE TAILLE QUELCONQUES) {VC++ 7.0}


 Information sur la source

Note :
7 / 10 - par 2 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Niveau :Initié Date de création :01/08/2004 Vu / téléchargé :7 315 / 731

Auteur : kod32

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce prog calcule le checksum md5 d'une chaine ou d'un fichier (peu importe la taille, meme le hash d'un très gros fichier fonctionne très bien).
Ci-dessous, les 2 fonctions en C que j'ai adapté dans le prog C++ pour faire l'interface graphique.

Source

  • char *md5_str(char *p)
  • {
  • md5_state_t state;
  • md5_byte_t digest[16];
  • char *hex_output = (char *)malloc(33);
  • int di;
  • //hashage
  • md5_init(&state);
  • md5_append(&state, p, strlen(p));
  • md5_finish(&state, digest);
  • //output
  • for (di = 0; di < 16; di++){
  • sprintf(hex_output + di * 2, "%02x", digest[di]);
  • }
  • return hex_output;
  • }
  • char *md5_file(FILE *fp)
  • {
  • md5_state_t state;
  • md5_byte_t digest[16];
  • char *hex_output = (char *)malloc(33);
  • char data[64];
  • int di, ln;
  • //hashage
  • md5_init(&state);
  • while(!feof(fp))
  • {
  • ln = fread(data, 1, sizeof(data), fp);
  • md5_append(&state, data, ln);
  • }
  • md5_finish(&state, digest);
  • //output
  • for (di = 0; di < 16; di++){
  • sprintf(hex_output + di * 2, "%02x", digest[di]);
  • }
  • return hex_output;
  • }
  • int filecmp(FILE *f1, FILE *f2)
  • {
  • char hash1[33], hash2[33];
  • strcpy(hash1, md5_file(f1));
  • strcpy(hash2, md5_file(f2));
  • return strcmp(hash1, hash2);
  • }
char *md5_str(char *p)
{
    md5_state_t state;
    md5_byte_t digest[16];
    char *hex_output = (char *)malloc(33);
    int di;
    
    //hashage
    md5_init(&state);
    md5_append(&state, p, strlen(p));
    md5_finish(&state, digest);
    
    //output
    for (di = 0; di < 16; di++){
	    sprintf(hex_output + di * 2, "%02x", digest[di]);
    }    
    return hex_output;
}

char *md5_file(FILE *fp)
{
    md5_state_t state;
    md5_byte_t digest[16];
    char *hex_output = (char *)malloc(33);
    char data[64];
    int di, ln;
    
    //hashage
    md5_init(&state);
    while(!feof(fp))
    {
        ln = fread(data, 1, sizeof(data), fp);
        md5_append(&state, data, ln);
    }
    md5_finish(&state, digest);
    
    //output
    for (di = 0; di < 16; di++){
	    sprintf(hex_output + di * 2, "%02x", digest[di]);
    }    
    return hex_output;
}

int filecmp(FILE *f1, FILE *f2)
{
    char hash1[33], hash2[33];
    strcpy(hash1, md5_file(f1));
    strcpy(hash2, md5_file(f2));
    return strcmp(hash1, hash2);
}

 Conclusion

Désolé pour les fonctions C du style sprintf, fopen ou autre, mais j'ai adapté mon code en C pour faire une interface graphique. Vous pourrez vous contenter des 2 fonctions ci-dessus mais le projet complet se trouve dans le zip...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   Release
    • BuildLog.htmTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 544 octets
    • main.objTélécharger ce fichier [Réservé aux membres club]16 339 octets
    • md5.exeTélécharger ce fichier [Réservé aux membres club]49 152 octets
    • md5.objTélécharger ce fichier [Réservé aux membres club]7 593 octets
    • md5.pdbTélécharger ce fichier [Réservé aux membres club]265 216 octets
    • md5.resTélécharger ce fichier [Réservé aux membres club]768 octets
    • vc70.idbTélécharger ce fichier [Réservé aux membres club]109 568 octets
    • vc70.pdbTélécharger ce fichier [Réservé aux membres club]94 208 octets
  • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 805 octets
  • md5.apsTélécharger ce fichier [Réservé aux membres club]34 516 octets
  • md5.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier12 815 octets
  • md5.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 483 octets
  • md5.ncbTélécharger ce fichier [Réservé aux membres club]44 032 octets
  • md5.rcTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 280 octets
  • md5.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier895 octets
  • md5.suoTélécharger ce fichier [Réservé aux membres club]8 704 octets
  • md5.vcprojTélécharger ce fichier [Réservé aux membres club]3 524 octets
  • resource.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier860 octets

Télécharger le zip


 Sources du même auteur

LES NOMBRES PREMIERS (CRIBLE D'ERATHOSTÈNE)
TRI D'ENTIER DANS L'ORDRE CROISSANT (TRISHELL)
IMPLÉMENTATION D'UNE PILE D'ENTIER
CONVERSION BINAIRE <> DECIMALE EFFICACE
CONVERTION D'UNE CHAINE DE MJUSCULE EN MINUSCULE ET VICE VER...

 Sources de la même categorie

Source avec Zip Source avec une capture PROGRAMME DE SUDOKU par AffreuxJojp
Source avec Zip EVALUATEUR D'EXPRESSION ARITHMÉTIQUE par matrx180vTitanium
Source avec Zip Source avec une capture QBIBLIO GESTION DES PRÊTS par conatic
Source avec Zip Source avec une capture QL-CHATROOM V 1.0 par mature
Source avec Zip Source avec une capture GEOLOCALISATION par ganjarasta

Commentaires et avis

Commentaire de albert0 le 02/08/2004 23:55:28

salut,

sa sert a quoi enfet?

j'ai pas tres bien compris

Commentaire de kod32 le 03/08/2004 12:20:03

à calculer le checksum md5 d'un fichier ou d'une chaine de caractère. Le hash md5 est le plus employé pour la comparaison de fichiers car il est très sensible. En effet le simple changement d'un caractère ou le remplacement d'une majuscule en minuscule ou autre fait changer tout le hash donc très précis.

Commentaire de kronemburg le 30/08/2005 08:48:32

J'aimerai bien que ça marche !
j'ai :
char *md5_str(char *p)
{
    md5_state_t state;
    md5_byte_t digest[16];
    char *hex_output = (char *)malloc(33);
    int di;
    
    //hashage
    md5_init(&state);
    md5_append(&state, (const md5_byte_t *)p, (int)strlen(p));
    md5_finish(&state, digest);
    
    //output
    for (di = 0; di < 16; di++){
    sprintf(hex_output + di * 2, "%02x", digest[di]);
    }    
    return hex_output;
}

J'utilise dev-cpp 4.9.9.2 et il me retourne lors de la copilation :
  [Linker error] undefined reference to `md5_init'
  [Linker error] undefined reference to `md5_append'
  [Linker error] undefined reference to `md5_finish'
  ld returned 1 exit status

Que faire please ??!
Amicalement

Commentaire de tigzy le 04/04/2011 13:11:06 5/10

Le MD5 renvoyé est incorrect on dirait

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales