web-dev-qa-db-ja.com

.NET用の本番環境対応のbcrypt実装

.NET/C#bcryptの実装が本番環境に適していると考えられるものはどれですか。

CryptSharpとBCrypt.Netが他の質問への回答で言及されているのを見ましたが、それらがどの程度広く使用されているか、どれだけレビューされているかについての議論はありません。

8
broccoli_soup

C#はJavaと共有し、1つの注目すべき特性であるは再現可能です。それがJavaのモットーである「1回の書き込みでどこでも実行」です。これは完全に正しいわけではありませんが、次のようなコードの場合です。

  1. 浮動小数点型を使用しません。
  2. 純粋な計算です(システムコールなし)。
  3. モノスレッドです。

その後、テストは効果的です。つまり、 BCrypt.NET 実装を使用して、 参照コード と互換性があるかどうかを確認できます。非ASCIIパスワード文字を使用したテストを含めるように注意してください。ASCII以外のパスワード文字は、多くの場合痛い点です。また、パフォーマンスを測定して、.NET実装が過度に遅くなっていないことを確認します(この種の計算タスクの場合、Javaまたは.NETコードは、Cコードよりも約2〜4倍遅くなることが予想されます)。

.NET実装が参照コードと互換性があり、そのパフォーマンスがひどい場合は、C#/。NETの「再現可能な結果」の側面から、本番稼働の準備ができていると結論付けることができます。

2
Thomas Pornin

これは本当にあなたの質問に答えないことを私は意識していますが、bcryptは(私の意見では)最良のパスワードハッシュメカニズムではありません。

ここでPBKDF2を使用したパスワードハッシュメカニズムのc#実装を見つけることができます。 CrackStation

ずっと若いですが、scryptについて良いことを聞いたことがあります TarSnap scrypt 残念ながら、.netの適切な実装を見つけるのに、あまり成功していません。

1
ATNPGO