2010-10-21 2 views
1

Так что я нахожусь в написании приложения ASP.NET, которое требует импорта пользователей из приложения PHP. Пароли были хэшируются с использованием MD5 в базу данных, так что записи в таблице пользователей выглядит более или менее, как это:Импорт паролей MD5 из PHP-приложения в ASP.NET

пользователя Пароль

user1 827ccb0eea8a706c4c34a16891f84e7b

user2 e10adc3949ba59abbe56e057f20f883e

И так далее. У меня есть доступ к исходному коду PHP, и я вижу, что нет соли или чего-то еще, это прямое приложение MD5. Теперь, назад на моем ASP.NET, я пытался использовать MD5, используя следующую логику:

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); 
    } 

Проблема заключается в том, что возвращающиеся струны, как 50-F8-4D-AF-3A-6D-FD-6A- 9F-20-C9-F8-EF-42-89-42, что, конечно же, не соответствует информации в базе данных. Что мне делать, мне не нужно перезагружать более 500 пользовательских паролей?

+0

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

ответ

0

Возвращение вместо этого:

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

BitConverter explicitly inserts dashes в строковое значение.

Или, конечно, вы можете продолжать использовать BitConverter и просто сделать .Replace("-","").ToLower()

Смежные вопросы