Conversion de type de variable

Résolu
conservatoire Messages postés 31 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 25 janvier 2010 - 25 janv. 2010 à 18:51
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 26 janv. 2010 à 20:34
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

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
25 janv. 2010 à 23: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
3
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
25 janv. 2010 à 20:41
sprintf() ?
---
VB.NET is good ... VB6 is better
0
conservatoire Messages postés 31 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 25 janvier 2010
25 janv. 2010 à 20:43
Ben j'ai cherché dans ce sens mais je n'arrive pas à trouver une syntaxe correcte...
Tu n'aurais pas un ptit exemple?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 janv. 2010 à 22:25
"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++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
conservatoire Messages postés 31 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 25 janvier 2010
25 janv. 2010 à 23:22
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 ;)
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
26 janv. 2010 à 20:34
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
0
Rejoignez-nous