windows 変換 winapiのbcrypt.hは実際にbcryptハッシュをサポートしていますか?




bcrypt 変換 (2)

これは奇妙な質問のように聞こえるかもしれませんが、私は実際にこれを尋ねなければならないと少し奇妙にbcryptますが、Vistaで追加されたbcryptルーチンのMSDNドキュメントを見て、実際のbcryptサポートはないということです!

ウィキペディアによると:

bcryptは、パスワード用の適応型暗号ハッシュ関数です。Blowfish暗号に基づいています...レインボーテーブル攻撃から保護するために塩を組み込むことに加えて、bcryptは適応性のあるハッシュです。時間が経つにつれて、速度が遅くなり、ハッシュとソルトに対する特定のブルートフォース検索攻撃へ。

しかし、MSDNのドキュメントから、 "bcrypt"ライブラリは明らかに実際には暗号化とハッシングのための一般的なインターフェイスです。 BCryptOpenAlgorithmProvider関数を介して "アルゴリズムプロバイダ"へのハンドルを取得する必要があります 。この関数には、いくつかの組み込みアルゴリズムが用意されています。 しかし、「ブローフィッシュ」という言葉はリストのどこにも現れません。

私は何かを逃していますか? 私はこれを間違って読んでいる? あるいは、Windowsの「bcrypt」ライブラリは実際にはbcryptをまったくサポートしていないのですか?


MSDNのコンテキストでは、BCryptは「BestCrypt」の略称ですが、そのPR名は次のとおりです。

暗号化API:次世代(Cng)

bcrypt.dll実装されていbcrypt.dll

BestCrypt / BCrypt / Cngは古いCryptoAPIの後継バージョンです。

マイクロソフトは自分のサイトから"BestCrypt"への参照を徐々に削除していますが、次のようなページでもそれを見ることができます。

SHA256Cngクラス

このアルゴリズムは、ハッシングのみのためであり、暗号化または復号化を提供しません。 これは、BCrypt(BestCrypt)レイヤCNGを使用します。

.NETフレームワークは、一般に、各種類の暗号アルゴリズムに対して3つの実装を提供できることは興味深い(とにかく)ことです。 たとえば、SHA2ハッシュの場合、次のようになります。

  • SHA256Managed :純粋にマネージコードで書かれた実装
  • SHA256CryptoServiceProvider :ネイティブ暗号化サービスプロバイダ(CSP)実装のラッパー
  • SHA256Cng :Cryptography Next Gen(Cng)実装のラッパー

短縮版

いいえ、 bcryptbestcryptの略です。 そして、いいえ、bcrypt(blowfish crypt)のパスワードハッシングをサポートしていません。


BCrypt APIは汎用的であり、さまざまな暗号化ハッシュアルゴリズムをサポートしていますが、bcryptはそれらの1つではありません。 Bプレフィックスは、古いAPIと次世代を区別する単なる方法であると思われます。







bcrypt