Crypto.HashPbkdf2AndReturnBase64SaltDotHash Method

使用随机 salt 值,然后用 PBKDF2 算法对密码进行哈希处理并同时返回所用 salt 以及哈希值。

Definition

Namespace: QuickAdmin.Utils
Assembly: QuickAdmin.Net (in QuickAdmin.Net.dll) Version: 1.0.122
C#
public static string HashPbkdf2AndReturnBase64SaltDotHash(
	string password,
	int saltByteSize = 16,
	int hashByteSize = 32,
	int iterationCount = 10000
)

Parameters

password  string
密码。
saltByteSize  int  (Optional)
随机 salt 的字节数。
hashByteSize  int  (Optional)
哈希字节数。
iterationCount  int  (Optional)
迭代次数。

Return Value

string
返回所用 salt 以及哈希值的 base64 编码形式的字符串,格式为 "salt.hash"

Example

本类中提供的这组 HashPbkdf2/VerifyHashPbkdf2 方法可用来进行密码的哈希生成和验证操作,并可以做到相同的密码每次生成的哈希值都不一样。
C#
string pwd = "123456";

// 生成随机 salt
string salt = Crypto.GenerateRandomBase64String(16);
// 生成密码哈希值
string hash = Crypto.HashPbkdf2(pwd, salt);
// 验证
Assert.IsTrue(Crypto.VerifyHashPbkdf2(pwd, salt, hash));
Assert.IsFalse(Crypto.VerifyHashPbkdf2("654321", salt, hash));

// 若使用随机 salt,可直接用 HashPbkdf2AndReturnBase64SaltDotHash() 方法,并将其结果作为密码串存储到数据库中。
// 返回示例:T/0c17jmPRCFo4yQ7+jy+Q==.zUAqhneoUOo99n6RMBlyLY1rSdb1cPXKmULvy/GT21Q=
string saltDotHash = Crypto.HashPbkdf2AndReturnBase64SaltDotHash(pwd);
// 验证
Assert.IsTrue(Crypto.VerifyHashPbkdf2(pwd, saltDotHash));
Assert.IsFalse(Crypto.VerifyHashPbkdf2("654321", saltDotHash));

See Also