当涉及与Winforms和MS SQL 2012相关的分配的登录表单时,我确实有一个关于密码哈希的问题。现在,我的数据库将密码存储为纯文本,即使分配规范确实存在,也感觉不对。更不用说密码存储方式了。所以我想应该试一试,并尽我所能,我真的不知道我应该如何精确地解决这个问题。我正在寻找有关如何完成操作的建议,无论是在C#端还是在数据库端。
现在,登录组件基本上会输入密码和用户名,然后返回一个DataTable,其中包含将要登录的用户定向到适当的窗口/屏幕的角色。现在,我们只需要直接输入用户名/密码的值即可,因为我们不需要填写注册表。
但是,这意味着每当我手动向数据库中输入新条目时,我就将密码直接以纯文本形式存储。我想找出在登录期间存储或验证时是否可以对密码进行哈希处理或加盐处理。这样的代码非常简单:
public DataTable Login(string username, string password)
{
DataTable dt = new DataTable();
string sql = "SELECT Role from dbo.LoginInfo WHERE Username = @Username AND Password = @Password";
if(username == null || password == null)
{
throw new ArgumentException("Empty Fields.");
}
SqlCommand command = new SqlCommand(sql, _connection);
command.CommandType = CommandType.Text;
command.Parameters.AddWithValue("@Username", username);
command.Parameters.AddWithValue("@Password", password);
try
{
SqlDataAdapter dataAdapter = new SqlDataAdapter(command);
dataAdapter.Fill(dt);
}
finally
{
_connection.Close();
}
return dt;
}
我的数据库如下:
ID || Username || Password || Role
===================================
1 || admin || admin || admin
2 || user1 || 103user|| user
我一直在尝试Google如何准确解决此问题,但我真的不知道如何准确解决此问题,我很乐意在这里寻求一些建议或指导。谢谢大家!