PasswordHash.NET は .NET で簡易にパスワードハッシュ関数を使用する為のライブラリです。
- PBKDF2 (HMAC-SHA-1)
- NIST 推奨の一つ。セキュリティ強度 128 bits。
- よりセキュリティ強度の高い HMAC-SHA-256(セキュリティ強度 256 bits)以上を PRF に使用する場合は、ターゲットフレームワークを .NET Core 2.0+ / .NET Framework 4.7.2+ にしてビルド。
Modular Crypt Format ハッシュ文字列を出力
- Salt やストレッチング回数込みの文字列を出力する為、ハッシュ管理が容易。
- パスワードハッシュのアップグレードへの備え。
saltSize=16
(128 bits) は NIST SP800-132 の推奨最小値。iterationCount=10000
は NIST SP800-63B の推奨最小値。- 目標とするハッシュ計算時間により要調整。
- dkLen(PBKDF2 で導出されるキー長) を hLen(内部 PRF の出力長) に揃えてる。
PRF が HMAC-SHA-1 なら 160 bits。
- .NET Standard 1.3+
- .NET Core 1.0+
- .NET Framework 4.6+
主にサインアップ処理で使用。
var password = "password123";
var hasher = new PBKDF2();
var hash = hasher.Hash(password);
Console.WriteLine(hash.ToString());
// $pbkdf2$10000$oLs2Pk11k85ekfB97qr9Nw$QvsHZBmsOgjmd8/SZK5EUf/TQ.0
主にサインイン処理で使用。
var password = "password123";
var hashStr = "$pbkdf2$10000$oLs2Pk11k85ekfB97qr9Nw$QvsHZBmsOgjmd8/SZK5EUf/TQ.0";
var result = PasswordHash.Verify(password, hashStr);
Console.Write(result);
// True
or
var password = "password123";
PasswordHash.TryParse("$pbkdf2$10000$oLs2Pk11k85ekfB97qr9Nw$QvsHZBmsOgjmd8/SZK5EUf/TQ.0", out var hash);
var result = hash.Verify(password);
Console.Write(result);
// True
This project is licensed under the MIT License - see the LICENSE file for details