2010-10-21 30 views
1

因此,我正在編寫一個需要從PHP應用程序導入用戶的ASP.NET應用程序。該密碼是使用MD5到數據庫散列,因此用戶表記錄看起來或多或少是這樣的:將PHP應用程序的MD5密碼導入到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 2010-10-21 19:10:20

回答

0

返回此相反:

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

BitConverter explicitly inserts dashes的字符串值。

或者你當然可以繼續使用BitConverter,只是做.Replace("-","").ToLower()