begin process at 2010 02 09 19:35:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caractères

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

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


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

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

Auteur : D1m3x

Ecrire un message privé
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

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture HACHAGE MD5 AVEC INTERFACE QT [VC++ 6.0]
Source avec Zip TUTORIAL SUR LA SDL, EN 4 PARTIE, 4 DOCUMENT WORD (.DOC)
Source avec Zip COMMENT FAIRE UNE DLL UTILISABLE DANS VOS PROJET C\C++ -> RE...
Source avec Zip CCONSOLEMENU -> CLASSE POUR LA CONSTRUCTION D'UN MENU DANS U...
LES STRINGS EN C++ [VC++; G++]

 Sources de la même categorie

Source avec Zip RECHERCHE D'ANNAGRAMMES par Torin
GESTION DE CHAINE DE CARACTÉRE EN C++ AVEC NSTRING par xmustapha
Source avec Zip COMMENTER CODE C <=> ASM (WIN64) par BruNews
Source avec Zip GSTRING - GESTION DES CHAINES DE CARACTÈRES par Neokript
Source avec Zip ANALYSEUR SYNTAXIQUEV(0.1) par kohan95

Commentaires et avis

Commentaire de D1m3x le 30/10/2003 13:41:16

J'attends vos commentaires!

Commentaire de PJulot le 30/10/2003 18:02:46

Très bon code.

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

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.

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

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

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

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

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

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)

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?

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 ?

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

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

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

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

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

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

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?

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

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

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

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

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

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales