2010-11-17 5 views
10

Ich arbeite an einem Windows Phone 7-Anwendung. Ich verwende this implementation für MD5 Hashing in Silverlight.MD5 Hash in Silverlight

ich diesen Code verwenden -

protected string GetMD5Hash(string input) 
    { 
     byte[] bs = System.Text.Encoding.UTF8.GetBytes(input); 
     MD5Managed md5 = new MD5Managed(); 
     byte[] hash = md5.ComputeHash(bs); 

     StringBuilder sb = new StringBuilder(); 
     foreach (byte b in bs) 
     { 
      sb.Append(b.ToString("x2").ToLower()); 
     } 

     return sb.ToString();  
    } 

Aber ich bin nicht immer den richtigen MD5-Hash für den Eingang I liefern. Ich bin nicht sicher, was mit diesem Code falsch ist. Wenn jemand this implementation für MD5-Hashing in Silverlight verwendet hat, wissen Sie, wo ich falsch gelaufen bin?

+1

Als eine Anmerkung, MD5 könnte jetzt als obsolet angesehen werden - es ist nicht sicher. Ich würde empfehlen, eine Implementierung der SHA-Familie zu verwenden. –

+0

Warum denkst du, dass es falsch ist? Mit was vergleichen Sie es? Es gibt Kommentare auf der Seite, die Sie verlinken, die besagt, dass es fehlerhaft ist und nicht verwendet werden sollte –

+0

@Mr. Enttäuschung Ich arbeite mit einer 3rd-Party-API und so ist es wirklich nicht meine Entscheidung. – pavanred

Antwort

11

Sie Rückkehr die Hex-Version des Eingang, nicht die hash:

foreach (byte b in bs) 

sollte

foreach (byte b in hash) 

sein (Eine Alternative ist Convert.ToBase64String(hash) zu verwenden, wenn Sie nichts dagegen haben Es ist in Base64 statt Hex.)

+0

Oh, ich fühle mich so albern. Ich hätte das sehen sollen. Danke – pavanred

+5

@Pavanred Nun, du kannst Rubber Ducky aufhören, sich albern zu fühlen :) http://en.wikipedia.org/wiki/Rubber_duck_debugging –

4

Es gibt bereits eine akzeptierte Antwort für diese, aber für andere, die MD5 in Silverlight oder verwenden Windows Phone, ich poste einen Link zu another implementation von MD5, mit dem ich mehr Erfolg hatte.

Ich verbrachte mehrere Stunden damit, meinen Kopf gegen die Wand zu schlagen, mit der im ursprünglichen Beitrag erwähnten Implementierung, und versuchte, es in meinem Windows Phone-Projekt zum Laufen zu bringen. Es funktionierte in einigen Fällen und nicht in anderen.

Jeff Wilcox Version funktionierte perfekt.