CRYPTAGE AVEC MD5!!! [VC++ 6.0]

D1m3x Messages postés 402 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 21 juillet 2005 - 30 oct. 2003 à 13:41
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007 - 17 févr. 2007 à 10:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/17535-cryptage-avec-md5-vc-6-0

scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007
17 févr. 2007 à 10:58
Pourquoi certains hashs md5 sont de la forme "$1$ZWnke0$1fzDBVjUcT1Mpdd4u/T961" et non "21232f297a57a5a743894a0e4a801fc3"?

A quoi correspond la forme "$1$XXXXXXXX..."?
Suisse00 Messages postés 83 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 12 octobre 2005
10 janv. 2005 à 16:06
Je crois qu'il y a une légère erreur, dans la fonction md5Crypt() pourquoi retourner un int ? Il faudrais retourner pszTxtToCrypt (char*).

Aussi sous VC++ 7 quand je démarre l'application (en débug seulement) j'obtien l'erreur : Run-Time Check Failure #2 - Stack around the variable 'szHexOutput' was corrupted
gfag Messages postés 2 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 5 mai 2004
5 mai 2004 à 15:29
En fait je n'avais récupéré que le code présenté en début de page, je n'avais pas vu le lien de téléchargement qui se trouvait à sa gauche.
Pour ceux qui auraient rencontré le même problème, sachez que le lien s'appelle "Téléchargez le zip" et se situe juste à gauche de la partie nommée "Contenu de cette fiche".
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
5 mai 2004 à 14:29
ben tu dois soit ajuster le chemin de l'incude md5.h, soit mettre le md5.h ds le bon répertoire ;) avec ts les fichiers attenant évidemment
gfag Messages postés 2 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 5 mai 2004
5 mai 2004 à 11:43
Comment utiliser ce programme ?
Lorsque je le compile, le message
"fatal error C1083: Cannot open include file: 'md5.h': No such file or directory
Error executing cl.exe.
MD5.exe - 1 error(s), 0 warning(s)"
s'affiche...
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
20 avril 2004 à 17:56
ds l'exemple ci dessus la fonction prend en paramètre une char[900] ... c'est bizarre. remplace là pr qu'elle prenne une char* et un unsigned int pr la longueur de cette chaîne. après ça devrait aller non?
spiderAlpha Messages postés 3 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 20 avril 2004
20 avril 2004 à 10:31
Alors j'ai testé de copier ma AnsiString dans un char*,
puis de crypter le char*, cependant, j'obtiens toujours une erreur "Accés violation ......." , et si je modifie un tout petit peut l'exemple fournit dans le zip, je me prend une erreur " FATAL illegal VIREDEF fixup index in module......"

Alors que je ne fait que mettre une \n lors de l'affichage !!!!
le plus bizarre, c'est que si j'enléve les modifications que j'ai faites, le programme ne veut plus se compiler, l'erreur reste présente !!
Je trouve ça vraiment étrange...
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
20 avril 2004 à 07:26
Avec les AnsiString tu dois utiliser la méthode de conversion c_str() pour obtenir un pointeur sur une chaîne de type char* .
Cependant, je pense que tu ne peux pas passer cela comme, justement, un pointeur. Si la chaîne doit-être modifiée, tu dois utiliser strcpy avec, tjs, c_str() pour créer une nvlle chaîne bien char* elle. Enfin, je suis pas clair du tt, mais la clef c'est c_str(). ;-)
spiderAlpha Messages postés 3 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 20 avril 2004
19 avril 2004 à 23:36
Le code à l'air bien....
cependant, lorsque j'essais de le faire tourner avec Borland C++ Builder, je n'arrive pas à hasher une chaine d'un Edit->Text;

Quel modifications seraient à apporter à cette fonction afin qu'elles soit capable de traiter des chaines ou des char* ???

En tout cas, c'est presque parfait !!
D1m3x Messages postés 402 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 21 juillet 2005 1
12 déc. 2003 à 15:45
Très bonne idée mais si tu préfère le C pur utilise les fopen ... mais je te conseille quand même les fstrean.. je préfère aussi :)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
12 déc. 2003 à 14:21
oh pas de problème, tu sais te débrouiller avec les fichiers?
je te conseille d'utiliser la STD pour ça!! sur www.cplusplus.com tu as une référence sur la STL et la STD, et là ils expliquent tout sur les fstream (flux de fichiers) vrmnt, utilise ça! ;-)
petitprince77 Messages postés 5 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 12 décembre 2003
12 déc. 2003 à 13:56
(ben aucun :) )
en fait ce qui te parait évident est nouveau pour moi (je débute!)

Merci
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
11 déc. 2003 à 18:01
ben pr un fichier tu charges le fichier dans une chaîne de caractère, quel est le problème ?
petitprince77 Messages postés 5 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 12 décembre 2003
11 déc. 2003 à 17:33
ahhh au fait pourquoi ce code ne fonctionne pas sur win98?

quel autre alternative y aurait il?
petitprince77 Messages postés 5 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 12 décembre 2003
11 déc. 2003 à 17:29
merci pour ton code D1m3x, c'est vrai que sur le net il n'y en a pas énormément!

j'aimerai obtenir le CRC d'un fichier (voir s'il a des erreurs)
Dans l'exemple c'est fait sur une chaine de caractère!
Comment faire???

merci les gars (et filles bien sur)
BombStrike Messages postés 23 Date d'inscription lundi 1 juillet 2002 Statut Membre Dernière intervention 27 juin 2004
25 nov. 2003 à 09:16
comme l'a dis worms, md5 est un hashage, il renvoi toujours une clé alphanumerique de 32bytes. cela monte le nombre de possibilités a 32^36 = 1532495540865888900000000000000000000000000000000000000
avant de toutes les tester, va falloir prendre son tps. son autre grand avantage est que vous ne pouvez pas le dechiffrer, cet algorithme ne sert que pour les operations de comparaisons/verification de données ( on a le vrai md5, et on compare avec le md5 de ce que nous donne l'user ).
et pour finir, md5.h est de L. Peter Deutsch <ghost@aladdin.com> Aladdin Enterprises
voila c tout :)
D1m3x Messages postés 402 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 21 juillet 2005 1
4 nov. 2003 à 18:49
Merci à tous pour les commentaires, et surtout à Wormstream, tu m'as encore une fois très bienj expliqué ce qu'était md5 :)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
4 nov. 2003 à 16:50
ah, excellente idée le double cryptage avec clé md5, je retiens, merci pr l'idée.

question: le md5 renvoie tjs une clef 32 bits, ou c que la "version php" qui fait ça? d'ailleurs, la "version php" (mais le md5 est il universel et invariant?) ne fait que les chiffres et les lettres de A à Z maj et minuscules. est-ce que c tjs comme ça ?

pr ma part, je l'utilise en php pour ceci: qd un utilisateur s'enregistre, je sauve son mot de passe ds la bdd crypté en md5. qd il veut s'enregistrer, je vérifie si le mot de passe entré crypté en md5 correpsond à l'enregistrement de la bdd. avantage: je ne sauve pas les mots de passe en clair ds la bdd, gain en sécurité.
WormsTeam Messages postés 4 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 4 novembre 2003
4 nov. 2003 à 10:26
Bonjour à tous,

Pour des raisons professionnelles, je me suis penché sur l'algo MD5. Effectivement, il ne s'agit pas d'un algo de cryptage mais d'un algo de hachage. La différence c'est que cette algo fournit effectivement une "signature" sur les données qu'on lui passe en entrée et non pas un cryptage. En gros, c'est un espèce de super checksum sur ces données. Son intérêt par rapport à un checksum est qu'il n'est pas singulier donc la moindre petit modification en entrée des données donnera une valeur de la clé MD5 très différente. Grace à sa, on peut s'en servir pour savoir si des données ont été interceptées lors de leur transmission.
J'ai mis 8 à ce code parce qu'il s'agit d'un très bon exemple de l'utilisation de la bibli MD5. Pour les personnes qui veulent utiliser cet algo, cet exemple est amplement suffisant, ça ne sert à rien de rentrer plus en détail dans les méandres de celui-ci (si ce n'est que pour des raisons perso).
Une autre appli de cet algo est qu'il fournit une clé aléatoire pour un process de cryptage complet (c'est comme ça que je l'ai utilisé perso !). C'est vachement intéréssant car si vous cryptez des mêmes données deux fois de suite, votre cryptage résultant sera complétement différent.

Voilà, pour le détail.

++ tout l'monde et merci de partager vos sources

WoRmsTeAm aka RiVoIrE
D1m3x Messages postés 402 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 21 juillet 2005 1
1 nov. 2003 à 20:33
Ué c vrai lol, mais bon faut quand même la connaître cette lib, il n'y a pas beaucouop de code qui traître le md5 sur ce site alors c'est toujours bon à prendre :)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
31 oct. 2003 à 11:43
salut,

j'ai mis 7/10 parce que finalement, tu utilises une bib déjà existante, tu vois, comme tu as mis des !!! ds le titre de ton code (ce que tu n'aurais pas fait si tu avais lu la charte en rouge ;-)) je me suis imaginé qu ça devait être qq ch de vrmnt extraordinnaire. dommage :-(
enfin, c'est tjs bon à savoir.
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
31 oct. 2003 à 00:44
Il me semble que l'algorithme MD5 ne réalise pas réellement un cryptage du texte initial mais plutot une signature unique différente pour chaque entrée.

De plus, l'intérêt du MD5 est qu'il est imposible de trouver le texte initial à partir de la signature. Ceci permet de vérifier qu'un fichier n'a pas été altéré.
PJulot Messages postés 29 Date d'inscription dimanche 8 juillet 2001 Statut Membre Dernière intervention 30 octobre 2003
30 oct. 2003 à 18:02
Très bon code.
D1m3x Messages postés 402 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 21 juillet 2005 1
30 oct. 2003 à 13:41
J'attends vos commentaires!
Rejoignez-nous