使用密码加密的c#代码的用户登录模块不工作



Iam从sql用户表中检索用户,该用户的密码是使用HASHYTES SHA1加密的。

数据集仅检索null值。

public  class UserModelClass
{
    public int Id { get; set; }
    public string UserName { get; set; }
    public int Authentication { get; set; }
    public string FullName { get; set; }
    public string Address { get; set; }
    public string Tel { get; set; }
    public int Encrypted { get; set; }
    public string Password { get; set; }
}
public static DataTable CheckUser(UserModelClass us)
{
    string sql = "SELECT TOP 1 1 FROM Users WHERE UserName=@username AND Password=HASHBYTES('SHA1',@Password)";
    using (SqlConnection con = new SqlConnection(DbConnection.GetConnectionString()))
    {
        using (SqlDataAdapter adapter = new SqlDataAdapter(sql, con))
        {
            adapter.SelectCommand.Parameters.AddWithValue("@UserName", us.UserName);
            adapter.SelectCommand.Parameters.AddWithValue("@password",  us.Password);
            DataSet ds = new DataSet();
            adapter.Fill(ds, "Users");
            return ds.Tables[0];
        }
    }
}

您需要更改此行:

string sql = "SELECT TOP 1 1 FROM Users WHERE UserName=@username AND Password=HASHBYTES('SHA1',@Password)";

使用此行:

string sql = "SELECT TOP 1 1 FROM Users WHERE UserName=@username AND Password= convert(nvarchar(max),HASHBYTES('SHA1',@password),1)";

nvarchar(max(必须与表上的数据类型匹配根据密码字段上的类型进行更改

最新更新