2011-04-28 19 views
20

He intentado hash una cadena en PHP usando MD5 y lo mismo en C#, pero los resultados son diferentes ... ¿alguien me puede explicar cómo conseguir este emparejado?Hash MD5 no coincide en C# y PHP

mi C# código es el

md5 = new MD5CryptoServiceProvider(); 
      originalBytes = ASCIIEncoding.Default.GetBytes(AuthCode); 
      encodedBytes = md5.ComputeHash(originalBytes); 

      Guid r = new Guid(encodedBytes); 
      string hashString = r.ToString("N"); 

Gracias de antemano

Editado: Mi cadena es 123 como una cadena

salidas;

PHP: 202cb962ac59075b964b07152d234b70

C#: 62b92c2059ac5b07964b07152d234b70

+0

No nos ha presentado la cadena que intentó hash o el código php que intentó utilizar. –

+0

¿Cuál es su opinión aquí? ¿Y cuál es tu código PHP equivalente? –

+0

http://stackoverflow.com/questions/821817/php-md5-algorithm-that-gives-same-result-as-c/821846#821846 –

Respuesta

31

Su problema está aquí:

Guid r = new Guid(encodedBytes); 
string hashString = r.ToString("N"); 

no estoy seguro de qué va a cargar sus bytes codificados en un Guid, pero que es no es la forma correcta de convertir bytes a una cadena. Use BitConverter en su lugar:

string testString = "123"; 
byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes(testString); 
byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes); 
string hashedString = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower(); 
// hashString == 202cb962ac59075b964b07152d234b70 
+2

Juliet ... ¡¡¡Perfecto !!!! ¡Gracias un compañero de millón! – megazoid