SimpleMemberProvider.EncryptPassword 如何工作

本文关键字:工作 何工作 EncryptPassword SimpleMemberProvider | 更新日期: 2023-09-27 18:35:59

我正在构建一个使用 SimpleMemberProvider 的应用程序。我必须写一些关于创建新用户如何工作的东西。现在我必须写关于加密密码(并添加引用)的文章。

当我创建一个新用户时,我只使用WebSecurity.CreateUserAndAccount方法。它会自动将用户和他的密码存储到数据库中,并且还会加密他的密码。

这里使用什么机制?我在互联网上找不到任何关于此的内容。

是否使用 Rfc2898DeriveBytes 类?

SimpleMemberProvider.EncryptPassword 如何工作

你会发现

,如果你通过调用堆栈,你最终会得到SimpleMembershipProvider.CreateAccount(string, string, bool)

此方法调用string hashedPassword = Crypto.HashPassword(password);其中Crypto是帮助程序类。

此方法如下所示:

public static string HashPassword(string password)
{
    if (password == null)
    {
        throw new ArgumentNullException("password");
    }
    // Produce a version 0 (see comment above) password hash.
    byte[] salt;
    byte[] subkey;
    using (var deriveBytes = new Rfc2898DeriveBytes(password, SaltSize, PBKDF2IterCount))
    {
        salt = deriveBytes.Salt;
        subkey = deriveBytes.GetBytes(PBKDF2SubkeyLength);
    }
    byte[] outputBytes = new byte[1 + SaltSize + PBKDF2SubkeyLength];
    Buffer.BlockCopy(salt, 0, outputBytes, 1, SaltSize);
    Buffer.BlockCopy(subkey, 0, outputBytes, 1 + SaltSize, PBKDF2SubkeyLength);
    return Convert.ToBase64String(outputBytes);
}

我相信这应该回答你的问题。