MD5

Résolu
cs_zatt Messages postés 131 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 23 septembre 2011 - 12 mars 2007 à 21:48
cs_zatt Messages postés 131 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 23 septembre 2011 - 19 mars 2007 à 21:45
Bonjour,
j'essaie d'obtenir un hash md5 à partir de cette méthode :

public
static
string ConvertirMD5(
string inTexte)
{

      MD5 md5 =
new
MD5CryptoServiceProvider();
     
byte[] data =
Encoding.Default.GetBytes(inTexte);
     
byte[] hash = md5.ComputeHash(data);
     
string hexaHash =
String.Empty;

     
foreach (
byte b
in hash)
     {
           hexaHash +=
String.Format(
"{0:x2}", b);
      }
     
return hexaHash;
}

après vérification de la chaine (affichage console, et génération xml), et test sur un encodeur en ligne, je m'aperçois que la chaine ne correspond pas du tout au résultat attendu
Même problème avec plusieurs autres méthodes testées ... aurais je oublié quelque chose ?

Merci pour toute réponse

5 réponses

cs_zatt Messages postés 131 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 23 septembre 2011
19 mars 2007 à 21:45
dsl, j'ai trouvé l'erreur 
il s'agissait en fait d'une mauvaise extraction dans une fonction en amont (d'où le byte en plus = un espace en trop en tête de chaine).
pas encore gagné avec le protocole, mais le hash est correct.

merci
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
13 mars 2007 à 09:24
Pourquoi ne pas tout simplement prendre la représentation base64 de ton hash ?

publicstaticstring ConvertirMD5(string inTexte)
{
      MD5 md5 = newMD5CryptoServiceProvider();
      byte[] data = Encoding.Default.GetBytes(inTexte);
      byte[] hash = md5.ComputeHash(data);

      return Convert.ToBase64String(hash);
}

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
cs_zatt Messages postés 131 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 23 septembre 2011
13 mars 2007 à 19:25
testé, symptômes identiques ...
le traitement de "32356247112485731139Q1P7W2E4J9R8U3S5"
me renvoie "uoTMzouidiD2MZLSLEZ1Qg==" pas hexa ça
au lieu de: "f3d732b2348b70c169586be67e908271"

J'ai pourtant vérifié les variables, et le traitement me parait correct, je ne comprend pas... Si ça peur aider il s'agit d'une réponse à un challenge server (MSNP), et donc, si pas bon -> déconnexion.
Merci pour ta réponse
0
cs_zatt Messages postés 131 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 23 septembre 2011
15 mars 2007 à 21:28
en fait le bug est beaucoup plus subtil...
Après avoir externalisé la fonction pour la tester, elle me renvoie elle la bonne valeur (donc différente de celle de l'appli).
En pas à pas, je constate que data contient 37 bytes dans l'appli, au lieu de 36 dans la version fonctionnelle (la chaine est entrée dans un textbox, sinon dans là ou ça bug il s'agit d'une variable String, qui contient une concaténation de 2 chaines).
Les valeurs du tableau sont sinon identiques, à part ce byte[0], qui vient de je ne sais où ...
0

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

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 mars 2007 à 08:50
toutes les chaines se terminent par le caractère \0

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
Rejoignez-nous