Fonction pour md5 d'un fichier + compiler la lib

Fonction pour md5 d'un fichier + compiler la lib - C - Programmation

Marsh Posté le 01-08-2007 à 18:46:11    

Salut,
 
Je suis à la recherche d'un fonction qui calcule le hash md5 d'un fichier, du style:
 

Code :
  1. long int signature = md5("c:\\fichier" );

Message cité 1 fois
Message édité par cimourdain le 01-08-2007 à 19:29:40
Reply

Marsh Posté le 01-08-2007 à 18:46:11   

Reply

Marsh Posté le 01-08-2007 à 18:53:23    

cimourdain a écrit :

Salut,
 
Je suis à la recherche d'un fonction qui calcule le hash md5 d'un fichier, du style:
 

Code :
  1. long int signature = md5("c:\\fichier" );



 
Super de foutre un hash dans un long int. Ca va vachement rentrer !!!
 
Va voir libmd5 => http://www.developpez.net/forums/s [...] p?t=315532


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 01-08-2007 à 18:59:59    

ouais je sais mais c'était histoire de mettre quelquechose :D

Reply

Marsh Posté le 01-08-2007 à 19:18:52    

cimourdain a écrit :

ouais je sais mais c'était histoire de mettre quelquechose :D


 

char signature[33];
strcpy(signature, md5("C:\\fichier" ));


 ;)


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 01-08-2007 à 19:26:44    

bon le lien que tu m'a donné Sve@r c'est deux fichiers: un .c et un .h.
J'ai donc essayé d'en faire un fichier lib statique c'est a dire un .a mais comme je sais pas faire j'ai cherché un peu et j'ai trouvé ca:
 
à partir du fichier objet que j'ai obtenu par gcc -c source.c -o source.o je fais un ar puis un ranlib: ar r source.a source.o puis ranlib source.a
 
Est ce que c'est la bonne façon de compiler une librairie statique ?


Message édité par cimourdain le 01-08-2007 à 19:28:45
Reply

Marsh Posté le 01-08-2007 à 19:36:04    

bon en fait elle va pas ta lib, j'ai regarder toutes les fonctions dans le .h et y'a rien qui va, apparement y'a besoin d'avoir des connaissance sur le fonctionnement de md5 je vois pas comment je pourrais faire le hash md5 d'un fichier avec ca relativement simplement.
 
Par contre pour la facon de compiler une lib statique je suis toujours preneur !

Reply

Marsh Posté le 01-08-2007 à 20:37:11    

cimourdain a écrit :

bon en fait elle va pas ta lib, j'ai regarder toutes les fonctions dans le .h et y'a rien qui va, apparement y'a besoin d'avoir des connaissance sur le fonctionnement de md5 je vois pas comment je pourrais faire le hash md5 d'un fichier avec ca relativement simplement.


Télécharge le source de la lib, tu dois sûrement avoir une doc intégrée
 

cimourdain a écrit :

Par contre pour la facon de compiler une lib statique je suis toujours preneur !


Autre sujet mais bon => http://fr.lang.free.fr/cours/Gener [...] t_v1.0.pdf    p.9 à 11

Message cité 1 fois
Message édité par Sve@r le 01-08-2007 à 20:39:48

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 01-08-2007 à 22:26:27    

Sve@r a écrit :


Télécharge le source de la lib, tu dois sûrement avoir une doc intégrée
 


 
non y'a pas de doc dans l'archive des sources de la lib, y'a meme pas grand chose en fait cette lib n'offre que 3 fonctions qui se courrent après...

Reply

Marsh Posté le 02-08-2007 à 15:22:48    

cimourdain a écrit :


 
non y'a pas de doc dans l'archive des sources de la lib, y'a meme pas grand chose en fait cette lib n'offre que 3 fonctions qui se courrent après...


 
Voici un exemple que je viens de lire qui devrait fonctionner

int main(int argc, char *argv[])
{
    char text[] = "bonjour, le monde est beau aujourd'hui";
    char digest[16];
    int taille = strlen(text);
    int i = 0;
 
    md5_state_t pms;
 
    md5_init(&pms);
    md5_append(&pms, (md5_byte_t *) text, taille);
    md5_finish(&pms, (md5_byte_t *) digest);
 
    /* Affichage des Codes ASCII */
    for(i = 0; i < 16; i++)
        printf("%x ", digest[i]);
     
    /* Affichage de la chaine */
    fputs(digest, stdout);
 
    return 0;
}


 
D'après cet exemple, il te faut
1) initialiser ton hash via md5_init()
2) faire le calcul avec md5_append() => imaginons que tu doives hasher un fichier => tu lis "n" caractères que tu stockes dans un buffer et tu passes ce buffer à md5_append() et tout ceci dans une jolie boucle
3) finir le hash par md5_finish() auquel tu passes un joli tableau de 16 car. qui servira àa stocker le hash => t'as plus qu'à afficher ce tableau car. par car. en hexa pour avoir ton hash à l'écran
 
Tu encapsules ces 3 étapes dans une jolie fonction que tu peux appeler quand tu veux et basta...
 


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 02-08-2007 à 17:10:39    

ok merci bien t'as répondu a la question que je me posais, a savoir, comment passer du calcul sur une chaine de caractères au calcul sur un fichier.
Je vais tester tout ca.

Reply

Marsh Posté le 02-08-2007 à 17:10:39   

Reply

Marsh Posté le 04-08-2007 à 13:00:41    

ll n'y a pas besoin de lib !  
les apis crypto md5 sont en natif sous windows

Reply

Marsh Posté le 04-08-2007 à 13:52:20    

tu peux détailler un peu stp ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed