md5 [résolu] - C - Programmation
Marsh Posté le 11-12-2006 à 19:04:23
nORKy a écrit : Bonjour, |
c'est quoi la question de programmation là dedans ?
Marsh Posté le 11-12-2006 à 19:46:21
nORKy a écrit : |
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 ?
Marsh Posté le 11-12-2006 à 20:26:15
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...
Marsh Posté le 12-12-2006 à 01:55:49
Sve@r a écrit : Le hash MD5 fait peut-être 16 octets mais la chaîne affichée en fait 32. |
Effectivement, je n'avais pas vu ça sous cet angle... Je pensais que le hash était stocké en hexa dans le fichier.
Marsh Posté le 12-12-2006 à 08:41:10
bon, je donne la solution que j'ai trouvé
Pour faire un hash md5 : (librairie openssl)
Code :
|
et donc pour le comparer a une chaine :
Code :
|
Code :
|
Marsh Posté le 12-12-2006 à 20:33:35
nORKy a écrit :
|
Gaffe au pointeur static car la valeur du pointeur renvoyé ne change jamais.
Ex:
Code :
|
Ben quel que soit "mot1" et "mot2", au final, tu te retrouves avec md1=md2...
Marsh Posté le 12-12-2006 à 23:07:30
Sve@r a écrit : Gaffe au pointeur static car la valeur du pointeur renvoyé ne change jamais.
|
Oui, je sais, mais comme je m'en sers pas 2 fois en meme temps...
Chacun fait en fonction de son utilisation
Marsh Posté le 13-12-2006 à 23:45:51
nORKy a écrit : Oui, je sais, mais comme je m'en sers pas 2 fois en meme temps... |
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) |
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...
Marsh Posté le 14-12-2006 à 20:29:19
Oui, mais c'est un peu différent :-) je vais pas imbriqué des fonctions pour traiter une chaine que je veux juste hasher :-)
Marsh Posté le 11-12-2006 à 14:53:35
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 édité par nORKy le 12-12-2006 à 08:42:28