問題タブ [bcrypt.net]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - BCrypt は C# で使用するのに適したハッシュ アルゴリズムですか? どこで見つけることができますか?
パスワードをハッシュするとき、多くのプログラマーが BCrypt アルゴリズムの使用を推奨していることを読みました。
私は C# でプログラミングしていますが、BCrypt の適切な実装を誰かが知っているかどうか疑問に思っていますか? このページを見つけましたが、偽物かどうかはよくわかりません。
パスワード ハッシュ スキームを選択する際に注意すべきことは何ですか? BCrypt は「良い」実装ですか?
.net - bcrypt の .net 実装
誰かが bcrypt の適切な実装を知っていますか?この質問は以前に尋ねられたことを知っていますが、応答はほとんどありませんでした。Google で表示される実装を選択するだけで少し確信が持てず、System.Security.Cryptography 名前空間で sha256 を使用する方がよいのではないかと考えています。少なくとも、それがサポートされていることはわかっています! あなたはどう思いますか?
c# - BCrypt.net GenerateSalt(31) がすぐに返されるのはなぜですか?
パスワードの保存に関する Jeff Atwood の投稿を読んだ後、私は BCrypt.net に出くわしました。これにより、Thomas Ptacek が BCrypt を使用してパスワードを保存することを勧めました。最終的に、この BCrypt の C# 実装にたどり着きました
上記の最後のリンクのコメントで、誰かが「GenerateSalt(30) には時間がかかるのに、GenerateSalt(31) にはまったく時間がかからないように見えるのはなぜですか?」と尋ねました。
BCrypt.HashPassword(password, BCrypt.GenerateSalt(31)) を実行したところ、0 ミリ秒で結果が得られました。
BCrypt.HashPassword("password", BCrypt.GenerateSalt(30)) を 5 分以上実行していますが、まだ結果がありません。
パスワード ハッシュ (またはBCrypt の場合は元に戻せない暗号化)を作成するために、ランダムに生成された 30 文字のソルトはおそらく何年も必要ないでしょう。編集私はコードを少し読むべきでした.logRoundsはソルトの長さとは何の関係もありません. ありがとうアーロノート。
では、GenerateSalt(31) がほぼ瞬時に値を返すのはなぜですか (GenerateSalt(30) の約 2 倍の時間がかかるのに)。
アップデート
ここに修正があります:
c# - jBCrypt 0.3 C#ポート(BCrypt.net)
元のjBCryptv0.1C#ポートのバグを調べた後:BCrypt.net(関連する質問)。新しいjBCryptコードを古いC#ポートと比較して、関連する質問のバグなどの不一致や潜在的な問題を探すことにしました。
これが私が見つけたものです:
前者が正しくない場合、次はそれを修正しますか?
c# - BCrypt for .NET に関するドキュメントはどこにありますか?
NuGet を使用して BCrypt ライブラリを取得しましたが、適切にインストールされています。今、それとその使用方法について読みたいのですが、ドキュメントが見つからないようです。
ライブラリの名前空間を検索しても結果は得られませんでした:
いくつかの例、または単純な古いドキュメントを見つける場所について何か提案はありますか? 私はC#を使用しています。
c# - 誰かがBCryptがハッシュを検証する方法を説明できますか?
パスワードをハッシュするためにC#とBCrypt.Netを使用しています。
例えば:
ソルトをどこにも保存していない場合、BCryptはハッシュを使用してパスワードをどのように検証しますか?私が持っている唯一のアイデアは、ハッシュの最後にソルトを追加することです。
これは正しい仮定ですか?
.net - 推奨される BCrypt.Net 実装
BCrypt.net にはいくつかの異なるポートがあり、どれが「最適」かを判断するのは非常に困難です。
誰かが時間を割いてそれらをレビューし、どのプロジェクトをひいきにするかについて何らかの結論に達しましたか? 私が最も興味を持っているのは、開発者のコミュニティが最も活発なのはどれかということです。もちろん、機能セット、有効性、シンプルさ、ドキュメントも素晴らしいです:)
以下は、私が追跡できた BCrypt.Net 実装のリストです。
私が知る限り、これは最初の移植であり、しばらく更新されていません。バージョン 0.1
ユーザーは Derek Slager のコピーを Google コードに投稿し、いくつかの改善を行いました。バージョン 0.3
Visual Studio の唯一の NuGet バージョンであり、ソースのないコンパイル済みコピーであるため、確実なことは何もわかりません。バージョン 0.3 の Google Code エディションでのみ利用可能な新しい機能をサポートしているようです。サポートサイトがリストされておらず、それがオープンソースであり、いかなる種類の帰属も持っていないかどうかはわかりません(少し大雑把です)。バージョン 1.0、213 ダウンロード。
これは、Derek Slager のポートとは関係のない完全に独立したポートのようです。半定期的に更新されているようです。バージョン R5、140 ダウンロード。
このリストは完全ですか?どちらかを選択する理由はありますか?
.net - HashAlgorithmを実装するbcryptの.Net実装?
認証ライブラリで bcrypt のサポートを許可したいと考えています。現在の問題の 1 つは、ハッシュのタイプがHashAlgorithm
. Bcrypt.net はこのクラスを実装していません。また、封印されているため、自分でブランチを作成して自分で変更する必要があります。HashAlgorithm を既に実装しているより良い代替手段はありますか?
c# - C#ASP.NETにカスタムhashAlgorithmTypeを追加する
セキュリティを強化する必要のあるページがあります。組み込みのMembershipProvider機能を使用しており、現在hashAlgorithmType
SHA512に設定しています。私はBCrypt.NETライブラリ(http://bcrypt.codeplex.com/)を持っており、コードからその関数を呼び出すとうまく機能しているようですが、適切なものを作成する方法を見つけるのに最悪の時間を費やしています<cryptographySettings>
Web.configのセクションで、を作成できますhashAlgorithmType
。
Webで次のコードスニペットを見つけました。
必要に応じて私を初心者と呼んでください。しかし、私にはその頭や尻尾を作るために必要な知識がないようです。必要なのは、メンバーシッププロバイダーに、のようなものが暗号化や復号化<hashAlgorithmType="bcrypt">
のようなものに対応することを伝える方法だけです。簡単な答えがあると言ってください。必要に応じてログインシステムを最初から書き直すこともできますが、ハッシュアルゴリズムを変更したいだけの実装がすでに機能しています。string hashed = BCrypt.HashPassword(password, BCrypt.GenerateSalt(12));
bool matches = BCrypt.CheckPassword(candidate, hashed);
asp.net - データベースで切り捨てられたBCryptハッシュパスワード
私はデータベースにパスワードを保存するためにBCryptの.Net実装を使用しています。パスワード列はVARCHAR(MAX)です。
これは、ストアドプロシージャを介してパスワードを更新するコードです。
一部のユーザーの場合、パスワードは切り捨てられます。切り捨て後の例は次のとおりです。$2a$ 12 $ XM2
これは常にそうであるとは限りません。
切り捨ての原因を理解するのを手伝ってください。
アップデート:
SPを呼び出してパスワードを更新するC#コードは次のとおりです。