SimpleMemberProvider.EncryptPassword 如何工作
本文关键字:工作 何工作 EncryptPassword SimpleMemberProvider | 更新日期: 2023-09-27 18:35:59
我正在构建一个使用 SimpleMemberProvider 的应用程序。我必须写一些关于创建新用户如何工作的东西。现在我必须写关于加密密码(并添加引用)的文章。
当我创建一个新用户时,我只使用WebSecurity.CreateUserAndAccount方法。它会自动将用户和他的密码存储到数据库中,并且还会加密他的密码。
这里使用什么机制?我在互联网上找不到任何关于此的内容。
是否使用 Rfc2898DeriveBytes 类?
你会发现
,如果你通过调用堆栈,你最终会得到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);
}
我相信这应该回答你的问题。