4

nb 私は暗号の専門家ではありません (そのため、NaCl のようなライブラリを使用しています)。

この件について私が読んだことによると、ユーザーパスワードをデータベースに保存する最も安全な方法は、ハッシュとそのハッシュを生成するために使用されるソルトを保存することです。私はこの目的のために libsodium-net を使用することに決めましたが、今では件名に疑問が残ります: ソルトを生成して保存する必要はありませんか? libsodium-net には次の機能が含まれているため、質問します。

// this uses the default Strength.Interactive hashing algorithm
var hash = PasswordHash.ScryptHashString(password);
var isValid = PasswordHash.ScryptHashStringVerify(hash, password);

ハッシュを生成または検証するときにソルトを使用する必要はないようです。実際、ソルトを受け入れる ScryptHashString と ScryptHashStringVerify のオーバーロードされたメソッドはありません。ここで明らかな何かが欠けているように感じます。私ですか?それとも、libsodium-net は塩の必要性をなくしますか?

4

1 に答える 1

5

答えはドキュメントにあります。PasswordHash.ScriptHashString(password) から返される文字列にはソルト (および他のいくつかのパラメーター) が含まれているため、ソルトを個別に保存する必要はありません。

于 2016-03-08T17:28:36.687 に答える