Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

Catégorie :Chaîne de caractères Niveau : Initié Date de création : 30/10/2003 Vu / téléchargé: 9 635 / 1 066

Note :
8 / 10 - par 6 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (24)
Ajouter un commentaire et/ou une note

Description

Tout d'abord je tient à remercier BombStrike qui a publier une dll pour mirc qui évoquait le cryptage md5 (pas sur ce site....).

Lisez le "LIS!!.txt" et vous saurez ce que vous avez à faire avec ce code!!!
 

Source

  • // Copiez-collez ce code dans votre projet!
  • #include <windows.h>
  • #include "md5.h"
  • #pragma check_stack(off)
  • #pragma comment( linker, "/OPT:NOWIN98" )
  • int md5Crypt( char pszTxtToCrypt[ 900 ] )
  • {
  • // déclaration des variables
  • char szCar [ 900 ],
  • szHexOutput [ 16 * 2 ];
  • int nLen,
  • nDi;
  • // création du code md5
  • strcpy( szCar, pszTxtToCrypt );
  • nLen = strlen( szCar );
  • md5_state_t state;
  • md5_byte_t digest[ 16 ];
  • md5_init( &state );
  • md5_append( &state, ( const md5_byte_t * ) szCar, nLen);
  • md5_finish( &state, digest );
  • for ( nDi = 0; nDi < 16; nDi++)
  • wsprintf( szHexOutput + nDi * 2, "%02x", digest[ nDi ] );
  • wsprintf( pszTxtToCrypt,"%s", szHexOutput );
  • return 3;
  • }
// Copiez-collez ce code dans votre projet!
#include <windows.h>

#include "md5.h"

#pragma check_stack(off)
#pragma comment( linker, "/OPT:NOWIN98" )

int md5Crypt( char pszTxtToCrypt[ 900 ] )
{
	// déclaration des variables
	char	szCar		[ 900 ],
			szHexOutput	[ 16 * 2 ];

	int		nLen,
			nDi;

	// création du code md5
	strcpy( szCar, pszTxtToCrypt );
	nLen = strlen( szCar );
	md5_state_t	state;
	md5_byte_t	digest[ 16 ];

	md5_init( &state );
	md5_append( &state, ( const md5_byte_t * ) szCar, nLen);
	md5_finish( &state, digest );

	for ( nDi = 0; nDi < 16; nDi++)
	    wsprintf( szHexOutput + nDi * 2, "%02x", digest[ nDi ] );

	wsprintf( pszTxtToCrypt,"%s", szHexOutput );

	return 3;
}

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de D1m3x le 30/10/2003 13:41:16

J'attends vos commentaires!

signaler à un administrateur
Commentaire de PJulot le 30/10/2003 18:02:46

Très bon code.

signaler à un administrateur
Commentaire de ymca2003 le 31/10/2003 00:44:53

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é.

signaler à un administrateur
Commentaire de Kirua le 31/10/2003 11:43:18

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.

signaler à un administrateur
Commentaire de D1m3x le 01/11/2003 20:33:19

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 :)

signaler à un administrateur
Commentaire de WormsTeam le 04/11/2003 10:26:42

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

signaler à un administrateur
Commentaire de Kirua le 04/11/2003 16:50:58

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é.

signaler à un administrateur
Commentaire de D1m3x le 04/11/2003 18:49:33

Merci à tous pour les commentaires, et surtout à Wormstream, tu m'as encore une fois très bienj expliqué ce qu'était md5 :)

signaler à un administrateur
Commentaire de BombStrike le 25/11/2003 09:16:14

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 &lt;ghost@aladdin.com&gt; Aladdin Enterprises
voila c tout :)

signaler à un administrateur
Commentaire de petitprince77 le 11/12/2003 17:29:17

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)

signaler à un administrateur
Commentaire de petitprince77 le 11/12/2003 17:33:27

ahhh au fait pourquoi ce code ne fonctionne pas sur win98?

quel autre alternative y aurait il?

signaler à un administrateur
Commentaire de Kirua le 11/12/2003 18:01:59

ben pr un fichier tu charges le fichier dans une chaîne de caractère, quel est le problème ?

signaler à un administrateur
Commentaire de petitprince77 le 12/12/2003 13:56:42

(ben aucun :)  )
en fait ce qui te parait évident est nouveau pour moi (je débute!)

Merci

signaler à un administrateur
Commentaire de Kirua le 12/12/2003 14:21:40

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! ;-)

signaler à un administrateur
Commentaire de D1m3x le 12/12/2003 15:45:28

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 :)

signaler à un administrateur
Commentaire de spiderAlpha le 19/04/2004 23:36:42

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-&gt;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 !!

signaler à un administrateur
Commentaire de Kirua le 20/04/2004 07:26:15

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(). ;-)

signaler à un administrateur
Commentaire de spiderAlpha le 20/04/2004 10:31:41

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...

signaler à un administrateur
Commentaire de Kirua le 20/04/2004 17:56:15

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?

signaler à un administrateur
Commentaire de gfag le 05/05/2004 11:43:49

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...

signaler à un administrateur
Commentaire de Kirua le 05/05/2004 14:29:02

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

signaler à un administrateur
Commentaire de gfag le 05/05/2004 15:29:12

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".

signaler à un administrateur
Commentaire de Suisse00 le 10/01/2005 16:06:59

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

signaler à un administrateur
Commentaire de scelw le 17/02/2007 10:58:23

Pourquoi certains hashs md5 sont de la forme "$1$ZWnke0$1fzDBVjUcT1Mpdd4u/T961" et non "21232f297a57a5a743894a0e4a801fc3"?

A quoi correspond la forme "$1$XXXXXXXX..."?

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.