116

誰かが bcrypt の適切な実装を知っていますか?この質問は以前に尋ねられたことを知っていますが、応答はほとんどありませんでした。Google で表示される実装を選択するだけで少し確信が持てず、System.Security.Cryptography 名前空間で sha256 を使用する方がよいのではないかと考えています。少なくとも、それがサポートされていることはわかっています! あなたはどう思いますか?

4

6 に答える 6

58

BCrypt.netを探しているようですね:

BCrypt.netは、OpenBSDのBlowfishベースのパスワードハッシュコードの実装であり、NielsProvosとDavidMazièresによる「AFuture-AdaptablePasswordScheme」で説明されています。これは、Damien MillerによるjBCryptの直接移植であるため、同じBSDスタイルのライセンスの下でリリースされます。コードは完全に管理されており、リトルエンディアンのCLI実装で動作するはずです。Microsoft.NETとMonoでテストされています。

于 2009-05-16T22:02:12.213 に答える
25

BCrypt.Net は現時点で最も人気のあるライブラリのようです

http://bcrypt.codeplex.com/

これをパスワードのハッシュに使用する方法の例を次に示します。

[TestMethod]
    public void BCryptTest()
    {
        const string password = "PASSWORD";
        const int workFactor = 13;

        var start = DateTime.UtcNow;
        var hashed = BCrypt.Net.BCrypt.HashPassword(password, workFactor);
        var end = DateTime.UtcNow;

        Console.WriteLine("hash length is {0} chars", hashed.Length);
        Console.WriteLine("Processing time is {0} with workFactor {1}", end - start, workFactor);
        Console.WriteLine("Hashed password: {0} ", hashed);
        Console.WriteLine("correct password {0}", BCrypt.Net.BCrypt.Verify("PASSWORD", hashed));
        Console.WriteLine("incorrect password {0}", BCrypt.Net.BCrypt.Verify("PASSWORd", hashed));
    }

出力例:

hash length is 60 chars
Processing time is 00:00:01.0020000 with workFactor 13
Hashed password: $2a$13$iBqdG7ENBABEargiyzGlTexPsmviF/qrFxUZB2zce7HKF6MoBNhEq 
correct password True
incorrect password False
于 2012-11-19T23:56:26.410 に答える
23

BCrypt for .Netの更新された実装は、http://bcrypt.codeplex.com/にあります

于 2010-12-17T15:38:26.863 に答える
6

PostgreSQL (pg_crypto がある) から SQLite (ない) に何かを移動するときに BCrypt の実装が必要だったので、独自に作成しました。このメッセージを見て、これを必要としているのは私だけではないので、ライセンスを取得してリリースすることにしました。URL は次のとおりです。

http://zer7.com/software.php?page=cryptsharp

その背後にある Blowfish の実装は、Bruce Schneier のパブリック ドメインの C 実装のポートであり、すべての公式テスト ベクトルで成功します。

仕様に基づいて自分で書いた BCrypt コード。長さ 0 から 100 のランダムなパスワードとソルトを生成し、それらを暗号化し、テスト ファイルに出力する PHP スクリプトも作成しました。C# コードは、これまでのところ 100% の確率で一致しています。スクリプトを使用して、これを自分でテストしてください。

ライブラリには、.Net の SHA-1 のみの実装とは対照的に、任意の HMAC で機能する PBKDF2 コードも含まれています (今日追加されました。C# で SCrypt をすぐに実行する予定であり、HMAC-SHA256 を使用する PBKDF2 が必要です)。必要に応じて、これに基づいてスキームを作成することもできます。

于 2011-01-22T07:29:44.060 に答える
0

間違った答え、以下を参照してください

.Net Framework のすべての "Cng" (Cryptography Next Generation) 後置アルゴリズムで bcrypt が使用されるようになりました。例えば​​SHA256Cng


実際、MS BCrypt (BestCrypt) は、Blowfish 暗号に基づくものを参照していません。RobbyD さん、コメントありがとうございます。
他の誰かが同じ混乱を起こした場合に備えて、回答を削除しません。

于 2018-08-29T09:10:32.050 に答える
-2

おそらく、このMS BCryptCreateHash C++ 関数を試しましたか?? Windows Server 2008 および Windows Vista から存在するようです。

また、おそらく次のMS C# BCryptNative.csクラスも確認できます。

于 2015-08-26T20:04:03.800 に答える