gpt4 book ai didi

ASP.NET 使用 md5 对用户进行身份验证

转载 作者:行者123 更新时间:2023-12-04 05:52:36 26 4
gpt4 key购买 nike

目前我正在做一个小项目,用户注册密码字段在数据库中加密,因此我也需要使用 md5 算法对用户进行身份验证,但我的代码不起作用,每当我尝试输入正确的密码(未加密)时,它会输入但后来我发现我输入的任何密码,系统都会接受它,即使它在数据库中不匹配。

你能帮助我吗?这是我的代码:

 protected void btnSubmit_Click(object sender, EventArgs e)
{

string pAssword = txtPassword.Text;
MD5CryptoServiceProvider encryptor = new MD5CryptoServiceProvider();
byte[] encryptedValue;
UTF8Encoding encoder = new UTF8Encoding();
encryptedValue = encryptor.ComputeHash(encoder.GetBytes(pAssword));

DataSet ds = new DataSet();
ds = (startWebService.getAllUsers());
if (ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow dRow in ds.Tables[0].Rows)
{

string userName = dRow["UserName"].ToString();
string passWord = dRow["Password"].ToString();
string acctNo = dRow["AccountNumber"].ToString();

if (userName == txtUsername.Text.ToString() && acctNo == txtAcctNo.Text.ToString() && passWord == encryptedValue.ToString() )
{
FormsAuthentication.RedirectFromLoginPage(txtUsername.Text.ToString(), false);
lblError.Text = "You got it!";
Response.Redirect("MyAccount.aspx");
}
else
{
this.lblError.ForeColor = System.Drawing.Color.Red;
this.lblError.Text = "Either you have been type an incorrect network credentials or you have reached the maximum login attempts for your account.Please try again or contact the system administrator.";

startWebService.updateFailedLogin(txtAcctNo.Text.ToString(), txtUsername.Text.ToString());

}

}

}

}

我的网络服务:
    private DataSet GetDataSet(string strSPROC)
{

SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = strSPROC;
conn.Open();
SqlDataAdapter myDataAdapter = new SqlDataAdapter();
myDataAdapter.SelectCommand = cmd;
DataSet dsMT = new DataSet();
myDataAdapter.Fill(dsMT);
return dsMT;
conn.Close();
}
[WebMethod]
public DataSet getAllUsers()
{
return GetDataSet("ELMS_ALLINTERNETUSERS");
}

请帮助我,我必须以一种系统将接受正确等效的加密文本的方式更正此问题,例如我输入: spain = wdhs3x9029 但我尝试输入 philippines ,它也接受。

最佳答案

有一个很好的内置密码散列方法(你可以使用 MD5):

string encryptedValue = FormsAuthentication.HashPasswordForStoringInConfigFile(pAssword, "MD5");

您可以阅读有关此方法的更多信息 here .如果您需要重新发明轮子,那么我建议您将获取哈希作为字符串的方法更改为更像这样的方法:
MD5CryptoServiceProvider encryptor = new MD5CryptoServiceProvider();
UTF8Encoding encoder = new UTF8Encoding();

byte[] encryptedValueBytes = encryptor.ComputeHash(encoder.GetBytes(pAssword));
StringBuilder encryptedValueBuilder = new StringBuilder();
for (int i = 0; i < encryptedValueBytes.Length; i++)
{
encryptedValueBuilder.Append(data[i].ToString("x2"));
}
string encryptedValue = encryptedValueBuilder.ToString();

而不是字节数组上的简单 .ToString() 。

关于ASP.NET 使用 md5 对用户进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9902606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com