我目前正在將傳統的ASP.NET 1.1應用程序轉換爲.NET 4 MVC 3應用程序。C#MD5CryptoServiceProvider
我正在查看密碼加密,並且在舊代碼中使用MD5CryptoServiceProvider編寫了一個例程。
private string EncryptText(string szText)
{
try
{
UTF8Encoding objEncoder = new UTF8Encoding();
MD5CryptoServiceProvider objMD5Hasher = new MD5CryptoServiceProvider();
Byte[] btHashedDataBytes = objMD5Hasher.ComputeHash(objEncoder.GetBytes(szText));
string szReturn = objEncoder.GetString(btHashedDataBytes);
objEncoder = null;
objMD5Hasher = null;
return szReturn;
}
catch
{
return "";
}
}
我寫了一個快速的.NET 4的控制檯應用程序,並複製這一功能,所以我可以做對當前密碼的比較在數據庫(以確保MD5函數仍然給我相同的輸出)
string encTxt = encryptor.EncryptText("fbloggsPass12345");
using (SqlConnection conn = new SqlConnection("Server=server;Database=db;User Id=sa;Password=1111;"))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "UPDATE SiteUsers SET Token = '" + encTxt + "' WHERE PKey = 10";
if (cmd.ExecuteNonQuery() > 0)
Console.WriteLine("Updated");
else
Console.WriteLine("Failed");
}
conn.Close();
}
Console.ReadLine();
但是在數據庫中的密碼是目前!?MGF + &>和我得到的輸出是!?MGF + &>,當我在數據庫中存儲轉換成?? ?!??? MGF?+ & ??>
我可以看到的是幾乎相同的,但爲什麼我得到?人物
正如我所說這是一個快速控制檯應用程序來測試功能,而不是生產代碼。 EncryptText函數是從多年前編寫的應用程序複製而來的,錯誤處理將被完全修改。 –
@AndrewRayner:這不會使代碼更好:)基本問題是編碼部分,但值得關注所有其他問題。 –
我同意代碼是垃圾:)我只是想在證明一個概念之前,我們把這個新項目。我會嘗試關於這個問題的建議:)謝謝! –