我目前正在将旧版 ASP.NET 1.1 应用程序转换为 .NET 4 MVC 3 应用程序。
我正在查看密码加密,并在旧代码中编写了一个例程来使用 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?+&??>
我可以看到几乎相同,但为什么我得到了?人物