Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
688 connectés 

  FORUM HardWare.fr
  Programmation
  C

  md5 [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

md5 [résolu]

n°1489574
nORKy
Grmmph...
Posté le 11-12-2006 à 14:53:35  profilanswer
 

Bonjour,
 
J'ai un programme qui lit dans un fichier un mot md5. Ce code est donc enregistré dans un char * de 32 octets.
Ce programme est un serveur ; si on fait un telnet, le serveur demande un mot de passe.
Le mot de passe hashé avec md5 est un unsigned char * de 16 octets.
Comment comparer ?
En gros, je voudrais savoir, comment réécrire le mot lu dans le fichier pour qu'il devienne un 'vrai' md5.

Message cité 2 fois
Message édité par nORKy le 12-12-2006 à 08:42:28
mood
Publicité
Posté le 11-12-2006 à 14:53:35  profilanswer
 

n°1489753
Tamahome
⭐⭐⭐⭐⭐
Posté le 11-12-2006 à 18:29:52  profilanswer
 

"lu" pas "lit'
et "devienne" pas "devient"

n°1489766
_darkalt3_
Proctopathe
Posté le 11-12-2006 à 19:04:23  profilanswer
 

nORKy a écrit :

Bonjour,
 
J'ai un programme qui lit dans un fichier un mot md5. Ce code est donc enregistré dans un char * de 32 octets.
Ce programme est un serveur ; si on fait un telnet, le serveur demande un mot de passe.
Le mot de passe hashé avec md5 est un unsigned char * de 16 octets.
Comment comparer ?
En gros, je voudrais savoir, comment réécrire le mot lit dans le fichier pour qu'il devient un 'vrai' md5.


 
c'est quoi la question de programmation là dedans ?


---------------
Töp of the plöp
n°1489792
anordem
Posté le 11-12-2006 à 19:46:21  profilanswer
 

nORKy a écrit :


J'ai un programme qui lit dans un fichier un mot md5. Ce code est donc enregistré dans un char * de 32 octets.
 
Le mot de passe hashé avec md5 est un unsigned char * de 16 octets.
Comment comparer ?


 
 
Salut,
 
Déjà, un hash MD5 fait 128 bits soit 16 octets donc je ne comprend pas pourquoi le stocker dans un char* de 32 octets.
 
Ensuite, tu n'as qu'à comparer 2 tableaux... C'est quoi le problème ?

n°1489818
Sve@r
Posté le 11-12-2006 à 20:26:15  profilanswer
 

anordem a écrit :

Déjà, un hash MD5 fait 128 bits soit 16 octets donc je ne comprend pas pourquoi le stocker dans un char* de 32 octets.


Le hash MD5 fait peut-être 16 octets mais la chaîne affichée en fait 32.
Il est probable que ce soit la chaîne telle qu'on l'affiche qui ait été stockée et non le hash lui-même...
 
Donc pour répondre à _darkalt3_; tu convertis ta chaîne stockée sur 32 octets en binaire, c'est à dire que si t'as les valeurs 'a', '1', '2', '3' (soit 4 octets), cela te donnera en final le nombre "0xa123" soit 2 octets
Puis tu compares le calcul avec le mot de passe reçu...
 


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1489917
anordem
Posté le 12-12-2006 à 01:55:49  profilanswer
 

Sve@r a écrit :

Le hash MD5 fait peut-être 16 octets mais la chaîne affichée en fait 32.
Il est probable que ce soit la chaîne telle qu'on l'affiche qui ait été stockée et non le hash lui-même...


 
Effectivement, je n'avais pas vu ça sous cet angle...  :D Je pensais que le hash était stocké en hexa dans le fichier.
 

n°1489939
nORKy
Grmmph...
Posté le 12-12-2006 à 08:41:10  profilanswer
 

bon, je donne la solution que j'ai trouvé
Pour faire un hash md5 : (librairie openssl)

Code :
  1. md = MD5(mot, strlen(mot), NULL); // renvoi un ptr sur tableau static


 
et donc pour le comparer a une chaine :

Code :
  1. static char *my_md5(unsigned char *md)
  2. {
  3.   int i;
  4.   static char buf[80];
  5.   memset(buf, 0, 80);
  6.   for (i = 0; i < MD5_DIGEST_LENGTH; i++)
  7.     sprintf(&(buf[i*2]),"%02x",md[i]);
  8.   return(buf);
  9. }


 

Code :
  1. if (!strcmp(my_md5(md), chaine)) {
  2. }

n°1490609
Sve@r
Posté le 12-12-2006 à 20:33:35  profilanswer
 

nORKy a écrit :

Code :
  1. md = MD5(mot, strlen(mot), NULL); // renvoi un ptr sur tableau static



 
Gaffe au pointeur static car la valeur du pointeur renvoyé ne change jamais.
Ex:

Code :
  1. md1 = MD5(mot1, strlen(mot1), NULL);
  2. md2 = MD5(mot2, strlen(mot2), NULL);


 
Ben quel que soit "mot1" et "mot2", au final, tu te retrouves avec md1=md2...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1490658
nORKy
Grmmph...
Posté le 12-12-2006 à 23:07:30  profilanswer
 

Sve@r a écrit :

Gaffe au pointeur static car la valeur du pointeur renvoyé ne change jamais.
Ex:

Code :
  1. md1 = MD5(mot1, strlen(mot1), NULL);
  2. md2 = MD5(mot2, strlen(mot2), NULL);


 
Ben quel que soit "mot1" et "mot2", au final, tu te retrouves avec md1=md2...


 
Oui, je sais, mais comme je m'en sers pas 2 fois en meme temps...
Chacun fait en fonction de son utilisation  ;)

n°1491082
Sve@r
Posté le 13-12-2006 à 23:45:51  profilanswer
 

nORKy a écrit :

Oui, je sais, mais comme je m'en sers pas 2 fois en meme temps...
Chacun fait en fonction de son utilisation  ;)


 
Huuuummmm... Je croyais moi aussi pouvoir tout contrôler de mon clavier. Et puis un jour, j'ai fait un truc de ce style

while (strtok(..., ...) != NULL)
{
     <....>
     <....>
     sous_traitement();
}


 
Et dans ma fonction "sous_traitement()"

while (strtok(..., ...) != NULL)
{
     <....>
}


Ben t'auras vite compris que ça n'a jamais marché. Mais avant de me rendre compte du pb...


Message édité par Sve@r le 13-12-2006 à 23:46:46

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
mood
Publicité
Posté le 13-12-2006 à 23:45:51  profilanswer
 

n°1491549
nORKy
Grmmph...
Posté le 14-12-2006 à 20:29:19  profilanswer
 

Oui, mais c'est un peu différent :-) je vais pas imbriqué des fonctions pour traiter une chaine que je veux juste hasher :-)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  md5 [résolu]

 

Sujets relatifs
[PHP][résolu] date, le mois n'apparait pas toujours![RESOLU] 2 listbox relation n à m
[résolu] film le plus loué SQLrecuperer aleatoirement des donnees d'un tableau [RESOLU]
[PHP/MySQL][résolu] Images dans un BLOB -> <img src="...">[résolu]Authentification php surprenante...
[Résolu] Générer une nouvelle clé[RESOLU] Recherche de quoi debugger du JS sous IE6
Différence borders dans browsers - résoluprobleme avec md5 et ma session [RESOLU]
Plus de sujets relatifs à : md5 [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR