Conversion de type de variable [Résolu]

Signaler
Messages postés
31
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
25 janvier 2010
-
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
-
Bonjour a tous et à toutes!

Alors voila je suis entrain de coder un programme qui doit utiliser le hash MD5 d'un mot de passe. J'ai trouvé sur le WEB des sources me permettant de calculer ce hash : http://www.faqs.org/rfcs/rfc1321.html

Voila mon problème:
la source du site permet de calculer le hash et le stock dans une variable :

unsigned char [16];

il l'affiche ensuite grâce au code suivant:
static void MDPrint (digest)
unsigned char digest[16];
{

  unsigned int i;

  for (i = 0; i < 16; i++)
 printf ("%02x", digest[i]);
}


Après recherche il me semblerai que le %02x se réfère à un nombre codé en binaire?

Voici ma question comment récupérer le hash calculé sous forme d'un tableau de caractères classique que je pourrai utiliser comme chaine de caractère?

Merci d'avance!

__
S.BARHLI

6 réponses

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
Je suis tout à fait d'accord avec BruNews, et c'est de cette façon qu'on procède pour exprimer un MD5 sous forme lisible et imprimable :
char* buf = malloc(sizeof(char)*33);
if (buf == NULL) return 0;
sprintf(buf,"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
        digest[0],digest[1],digest[2],digest[3],digest[4],digest[5],digest[6],
        digest[7],digest[8],digest[9],digest[10],digest[11],digest[12],digest[13],
        digest[14],digest[15]);
printf("%s\n",buf);
free(buf);

Je ne sais pas s'il y a moyen de faire plus simple mais ça devrait fonctionner.
---
VB.NET is good ... VB6 is better
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
sprintf() ?
---
VB.NET is good ... VB6 is better
Messages postés
31
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
25 janvier 2010

Ben j'ai cherché dans ce sens mais je n'arrive pas à trouver une syntaxe correcte...
Tu n'aurais pas un ptit exemple?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
"caractères classiques", fallait y penser...
Un 0 on mettrait quoi ?
Un 9 (valeur de TAB) idem ???
etc pour toutes les valeurs d'octets <= 32.

Affiche donc le hash en hexa.

ciao...
BruNews, MVP VC++
Messages postés
31
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
25 janvier 2010

Merci beaucoup a vous deux! ça marche parfaitement !

p.S:
Je n'ai pas bien compris la boutade de BruNews à propos des caractères "classiques" faudra m'expliquer, mon humour informatique est un peu rouillé par contre si vous voulez des blagues de physicien j'en ai quelque une ;)
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
BruNews n'a pas tort : les chaines de caractères classiques n'existent pas. Ce sont simplement des tableaux de char terminés par un \0.
---
VB.NET is good ... VB6 is better