Pbkdf2如何验证哈希密码?

我正在使用以下代码使用Pbkdf2哈希密码:

private string HashPassword(string password)
        {
            // generate a 128-bit salt using a secure PRNG
            byte[] salt = new byte[128 / 8];
            using (var rng = RandomNumberGenerator.Create())
            {
                rng.GetBytes(salt);
            }

            // derive a 256-bit subkey (use HMACSHA1 with 10,000 iterations)
            string hashedPassword = Convert.ToBase64String(KeyDerivation.Pbkdf2(
                password: password,salt: salt,prf: KeyDerivationPrf.HMACSHA1,iterationCount: 10000,numBytesRequested: 256 / 8));

            return hashedPassword;
        }

如何验证身份验证密码?看来我需要获取用于哈希密码的盐。我怎么得到的?请注意,我没有使用单独的字段来存储哈希。数据库中仅存储哈希密码。

dubujiewu 回答:Pbkdf2如何验证哈希密码?

一种可能的替代方法是按照以下方式使用 Microsoft.AspNet.Identity 中的 PasswordHasher

var passwordHasher = new PasswordHasher();
var pass = "password";
var hash = passwordHasher.HashPassword(pass);
var isVerified = passwordHasher.VerifyHashedPassword(hash,pass) 
              != PasswordVerificationResult.Failed;
Console.WriteLine((isVerified ? "Verified" : "Not verified"));
本文链接:https://www.f2er.com/3166830.html

大家都在问