問題タブ [bcrypt]

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.

0 投票する
10 に答える
20267 参照

ruby-on-rails - bcrypt-ruby gem インストール エラーが発生するのはなぜですか?

gem デバイスをインストールしようとするとエラーが発生し、gem bcrypt-ruby でインストールが停止します。

RVMでRubyを使用してOSX 10.6.7を実行しています。最新バージョンの xcode を再インストールし、Ruby 64 ビット、Rails、およびすべての gem を再インストールしました。

0 投票する
1 に答える
4536 参照

ruby-on-rails - bcryptソルトは個別にアクセスできますか?

Rails 3.1で使用has_secure_passwordする場合、bcryptは各ユーザーのパスワードのソルトをランダムに生成します。この応答に基づいて、ソルトがパスワードハッシュの一部として保存されていることを理解しています。たとえば、安全なCookieの作成に使用するために、そのソルトに個別にアクセスするために使用できるメソッドまたは属性はありますか?

0 投票する
3 に答える
1421 参照

asp.net-mvc - ASP.NET MVC 3 アプリ、BCrypt.CheckPassword が失敗する

ASP.NET MVC 3 アプリケーションにセキュリティを実装する作業を行っており、ここにある BCrypt 実装を使用してパスワードの暗号化と検証を処理しています。ユーザー登録画面では、ユーザーが入力したパスワードが適切に暗号化され、ハッシュ化されたパスワードがデータベースに保存されます。ただし、ログイン ページでのパスワードの確認に問題があり、その理由がわかりません。

私の登録コントローラーのアクションには、次のものが含まれています。

これは Password.Hash です:

これは私がログインを処理する方法です:

CredentialsAreValid は、BCrypt.CheckPassword への呼び出しをラップします。

パスワード.比較:

最後に、これが BCrypt.CheckPassword が行っていることです。

それで、ええ...何が起こっているのかわかりませんが、私が知っていることはauthorized、ログインコントローラーアクションのブール変数が何らかの理由で常にfalseを返すことです。

過去に少なくともいくつかの他のプロジェクトでこのまったく同じ BCrypt クラスを使用しましたが、まったく問題はありませんでした。ASP.NET MVC 3 は、投稿されたデータに対して奇妙な、異なるエンコーディングを行っていますか? それとも、SQL CE 4 で実行されているのでしょうか (それが現在使用しているデータストアです)。私が知る限り、私のコードではすべてが順調に進んでいるように見えますが、何らかの理由で、パスワードのチェックが毎回失敗しています。誰にもアイデアはありますか?

ありがとう。

更新: BCrypt クラスに含まれるコード コメントと、その使用方法と動作の例を次に示します。

0 投票する
1 に答える
3924 参照

encryption - 脆弱なパスワード、bcrypt または SHA-256 + AES-256 でファイルを暗号化しますか?

脆弱なパスワード (ex の場合は小文字 8 文字) とファイルから始めます。そのパスワードを使用してそのファイルを暗号化する必要があります。結果は、既知の攻撃に対して安全でなければなりません。

アプローチ 1: SHA-256 を使用してパスワードをハッシュし、結果のハッシュとファイルを AES-256 への入力として使用して、暗号化されたファイルを作成することができます。SHA-256 と AES-256 の両方が非常に高速であることは理解しています。これにより、ファイルがブルート フォース攻撃に対して脆弱になるのではないでしょうか?

たとえば、事前に計算された SHA-256 ハッシュのレインボー テーブルを取得し、そのファイルが非常に小さく、パスワードが非常に脆弱であると想定して、そのテーブルからの各ハッシュを使用して妥当な時間内に AES-256 復号化を試みることができます (数特殊なハードウェアで数か月)。

アプローチ 2: bcrypt を使用します。私が正しく理解していれば、bcrypt は SHA-256 + AES-256 よりもファイルの暗号化に適しています。これは、キー生成スキームに作業要素があり、より強力なキーが得られるためです。それとも私が間違っていますか?

私が見た Ruby と Python の実装 (ラッパー?) は、暗号自体ではなく、パスワードのハッシュ スキームとして bcrypt を使用することに重点を置いています。bcrypt を使用して弱いパスをハッシュし、「ワンステップ」でファイルを暗号化することもできますか?

アプローチ 3: bcrypt を使用してパスをハッシュし、そのハッシュとファイルを AES-256 への入力として使用して、暗号化されたファイルを取得します。これにより、「鍵の生成が速すぎる」という問題が解決されます。(問題があると仮定します。)ただし、bcrypt ハッシュの長さは 448 ビットであり、AES-256 は 256 ビットのキーを必要とします。単純な解決策は、ハッシュの末尾のビットを単純に削除し、それを AES-256 のキーとして使用することです。結果がどうなるかを知るために暗号化について十分に知らないので、私はこのルートには行きません。

編集:これはオフライン アプリケーション用であるため、パスをソルトすることはできません。すなわち。塩を保管する合理的な場所はありません。パスをソルトし、ソルトを暗号化されていない状態で、暗号化されたファイルとともに保存できます。データベースが侵害された場合、ソルトはほとんど本質的にパブリック/可視です。ソルトの目的は、レインボー テーブル攻撃を防ぐことです。Nemo に感謝します。

0 投票する
1 に答える
3288 参照

c# - SHA512を繰り返して、より安全にしますか?

私は現在、ユーザーごとのランダムソルトでSHA512を使用して、ユーザーパスワードをハッシュし、データベースに保存しています。安価なGPUを使用してブルートフォース攻撃のパスワードについて説明するこの記事を読むまでは、これはかなり安全だと思いました。

bcryptに切り替える代わりに、SHA512を複数回使用するだけでセキュリティが向上しますか?プロセスを遅くし、ブルートフォースをはるかに困難にするために、それ自体の出力で100回または1000回実行しますか?または、SHA512を繰り返しても、実際にはセキュリティ上のメリットはありませんか?

0 投票する
2 に答える
1774 参照

ruby-on-rails-3 - bcrypt-ruby の使用方法について混乱している

私は検証スキームを実装しており、bcrypt-ruby gem を使用しています。

コンソールで新しいユーザーを作成します

そして、パスワードが有効かどうかを確認したら、次のことを行います。

しかし、データベースからユーザーを取得すると失敗します:

なぜそれが起こるのですか? また、これを機能させるために bcrypt を実装するにはどうすればよいですか?

前もって感謝します。

0 投票する
1 に答える
1678 参照

security - パスワードハッシュを移行する方法は?

ソルトされたMD5ハッシュとしてパスワードを保存しているが、bcryptを使用するようにパスワードを移動したい場合、その移行を実行するための最良の方法は何ですか?(パスワードを取り戻すことができない場合)

md5ハッシュをbcryptする必要がありますか?私が望まないことを行うことには暗号的な意味がありますか?

0 投票する
2 に答える
2447 参照

c# - 同じソルト、文字列、および係数を指定して異なるハッシュを生成する BCrypt

BCrypt の C# 実装の 1 つを使用して、パスワードをハッシュし、SQL データベースに格納します。ただし、ハッシュ文字列に対して検証に戻ると、BCrypt は比較対象のデータベースとは異なるハッシュを生成します。因子と同様に、塩は目に見えて同じです。

これが私が知っていることです

$2a$12$vF/1s3MqIzHwnDshyzH/rOYUelfrj4UWv./vzWqk4o2K0uwhix7W は実際には「Qwerty123」であり、[nvarchar] (200) に初期化された列に格納されます。

実装に応じて BCrypt.Verify() または BCrypt.CheckPassword() を使用する場合、比較を行う直前までトレースし、前述のハッシュと比較しようとしているハッシュは $2a$12$vF です。 /1s3MqIzHwnDshyzH/rOKVrePZSXFXaIpDv6.IPkbPEoOxZgSEe

よく見ると、塩と因子の部分が同じであることがわかります。何がこれを引き起こしているのでしょうか?

私が取り組んでいる明示的な実装は、ここにありますhttp://bcrypt.codeplex.com/

私の質問は、ASP.NET MVC 3 アプリ、BCrypt.CheckPassword の失敗に関連している可能性があります

0 投票する
2 に答える
159 参照

ruby-on-rails - RoR - RubyGems がインストールされていませんか?

bcrypt-ruby-2.1.4 をインストールしようとしています。rvm を使用して ruby​​ 1.9.2 を削除し、再インストール/コンパイルしてから bcrypt gem をインストールする必要がありますが、gem はその 1 つのターミナル セッションでのみアクティブになります。ターミナルで別のタブを開くと、「どのソースにも bcrypt-ruby-2.1.4 が見つかりませんでした」というエラーが表示されます。

ターミナルを閉じると、Ruby を削除して再コンパイルしない限り、bcrypt gem (または json、またはキュウリ) を使用できなくなりますか?

これについてグーグルで助けを求める方法さえわかりませんか?どんなアイデアや助けも大歓迎です。

osx 10.6.8 ルビー 1.9.2-p180 を実行しているボビー

0 投票する
2 に答える
791 参照

encryption - MySQL データベースで既存のパスワードをバッチ暗号化するにはどうすればよいですか?

クライアントの Web システムを更新しています。彼の「アカウント」テーブルには 20,000 人を超えるユーザーがいて、それぞれのパスワード フィールドはストレート テキストです。つまり、パスワードは暗号化されていません。(私は知っています、恐ろしい!) とにかく、これらのパスワードをすべて取得し、できればバッチ スタイルで簡単に暗号化し、データベースにインポートする方法を知る必要があります。検索してもあまり出てきませんでした。B-Crypt は見ましたが、主にファイルに使用されているようです。私はこれにかなり初心者なので、どんな提案でも大歓迎です! ありがとう。:)