我目前正在从事一个具有明文密码的项目。现在我们需要将所有明文密码更改为 HASH。数据库具有密码字段和密码盐字段。
我在 .Net 中尝试了以下操作(我发现 .Net 4 使用 HMACSHA256 算法)用数据库中已有的盐对密码进行哈希处理。
// I retrieved the password and salt from database and hashed it
string authDetails = row["Password"] + row["PasswordSalt"].ToString(); //password salt - value from database
byte[] authBytes = System.Text.Encoding.UTF8.GetBytes(authDetails);
var hma = new System.Security.Cryptography.HMACSHA256();
byte[] hashedBytes = hma.ComputeHash(authBytes);
string hash = Convert.ToBase64String(hashedBytes);
并将上述哈希变量值存储在密码字段中。
我更改了配置设置 passwordFormat="hashed"。
如果我尝试使用密码登录,则登录失败。我无法使用旧密码登录。有任何想法吗?
谢谢!
编辑:只是为了澄清..我使用 asp.net 会员提供程序。我在 web.config 中将 PasswordFormat 更改为“Hashed”。然后我调用 Membership.ValidateUser 来验证登录。- 我认为它会自动对输入的密码进行哈希处理并与数据库匹配。但我想通过 validateuser 方法生成的哈希与我上面生成的哈希不同。