我正在建立一个简单的密码保护网站。我正在使用以下函数来计算我在 stackoverflow 上找到的 MD5
protected string CalculateMd5Hash(string input)
{
// step 1, calculate MD5 hash from input
var md5 = MD5.Create();
byte[] inputBytes = Encoding.ASCII.GetBytes(input);
byte[] hash = md5.ComputeHash(inputBytes); // step 2, convert byte array to hex string
var sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("X2"));
}
return sb.ToString();
}
我有一个注册页面和一个登录页面。当用户注册时,我使用上述函数对密码进行哈希处理。
var user = new User
{
username = txtUsername.Text,
password = CalculateMd5Hash(txtPassword.Text),
};
db.Users.InsertOnSubmit(user);
db.SubmitChanges();
在登录页面中,我检查数据库中的用户和密码以查看它们是否匹配
var queryUserExists = (from u in db.Users
where u.username == txtUsername.Text && u.password == CalculateMd5Hash(txtPassword.Text)
select u).FirstOrDefault();
我的问题是从两个页面计算的 MD5 哈希值不同,因此即使字符串相同,它们也不匹配。我不明白为什么会这样。我该如何解决这个问题?有没有更好的处理方法?