現在、従来のASP.NET1.1アプリケーションを.NET4MVC3アプリケーションに変換しています。
パスワードの暗号化を調べていますが、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 "";
}
}
簡単な.NET4コンソールアプリケーションを作成し、この関数をコピーして、データベース内の現在のパスワードと比較できるようにしました(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?+&??>
私が見ることができるものはほとんど同じですが、なぜ私は?文字