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(必须与表上的数据类型匹配根据密码字段上的类型进行更改