2010-10-21 9 views
1

Je suis donc en train d'écrire une application ASP.NET qui nécessite d'importer des utilisateurs à partir d'une application PHP. Les mots de passe ont été hachés à l'aide MD5 dans la base de données, les enregistrements de la table utilisateur ressemble plus ou moins comme ceci:Importer des mots de passe MD5 d'une application PHP vers ASP.NET

utilisateur Mot de passe

user1 827ccb0eea8a706c4c34a16891f84e7b

utilisateur2 e10adc3949ba59abbe56e057f20f883e

Et ainsi de suite. J'ai accès au code source de PHP et je peux voir qu'il n'y a pas de sel ou quoi que ce soit d'autre, il est juste une application MD5 droite. Maintenant, mon retour sur ASP.NET, j'ai essayé d'utiliser MD5 en utilisant la logique suivante:

public static string HashPassword(string Password) 
    { 
     //Declarations 
     Byte[] originalBytes; 
     Byte[] encodedBytes;    
     MD5 md5; 

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

     return BitConverter.ToString(encodedBytes); 
    } 

Le problème est, qui est des chaînes comme 50-retour F8-4D-AF-3A-6D-FD-6A- 9F-20-C9-F8-EF-42-89-42, ce qui, bien sûr, ne correspond pas à l'information contenue dans la base de données. Que dois-je faire pour ne pas avoir à réinitialiser plus de 500 mots de passe utilisateur?

+0

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

Répondre

0

Retour ceci:

return Encoding.UTF8.GetString(encodedBytes).ToLowerInvariant(); 

BitConverter explicitly inserts dashes dans la valeur de chaîne.

Ou bien sûr, vous pouvez continuer à utiliser BitConverter et juste faire .Replace("-","").ToLower()