問題タブ [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.
php - PHP でパスワードを crypt() と比較する
この関数の基本を理解する必要があります。php.net のドキュメントには、blowfish アルゴリズムについて次のように記載されています。
「$2a$」、2 桁のコスト パラメータ、「$」、およびアルファベットの 22 個の base 64 桁「./0-9A-Za-z」のソルトを使用したフグのハッシュ。ソルトでこの範囲外の文字を使用すると、crypt() は長さゼロの文字列を返します。
したがって、これは定義上、機能しないはずです。
ただし、次のように吐き出します。
crypt() がソルト自体を 22 の長さにカットしたように見える場所。誰かがこれを説明してくれませんか?
私が理解できないこの関数の別の側面は、crypt() を使用してパスワードを比較する場合です。http://php.net/manual/en/function.crypt.php (例 #1 を参照)。これは、すべてのパスワードを暗号化するために同じソルトを使用する場合、最初に暗号化する必要があるということですか? すなわち:
御時間ありがとうございます
php - PHPアプリケーションでbcryptをベンダー化するにはどうすればよいですか(そしてそうすべきです)?
私は比較的成熟したオープンソースのPHPプロジェクトに貢献しています。最近、パスワードがプレーンなMD5ハッシュとして保存されていることを発見しました。これは、私にとって非常に面倒です。修正するならDoItRight(tm)もいいと思ったので、bcryptを使いたかった。
まず、私が他の言語で見つけたもの:bcrypt-rubyは、OpenBSDの元のCコードまたはjBCryptのJavaコードのいずれかを使用しているようです。 py-bcryptは、BSDコードの薄いラッパーです。 BCrypt.netはjBCryptの直接ポートです。
現在、PHP自体はcrypt関数でbcrypt(誤解を招くように単に「blowfish」と呼ばれていますが)をサポートしています。ただし、5.3より前のバージョンでは、システム自体のサポートが必要です。これは通常、crypt_blowfishによって提供されます。 phpassも同じで、PHP5.3またはSuhosinのいずれかをインストールすることをお勧めします。
アプリケーションの多くのユーザーは標準の共有ホスティングを使用しているので、サーバーの特別な構成は必要ありません。PHPの5.3リリースからコードを盗むことを望んでいましたが、それはCであり、(私が行ったほんの少しの読みから)プロジェクトのユーザーにC拡張機能の使用を要求することはできません。
私はbcryptの純粋なPHPポートを作成することを考えましたが、jBCryptのソースを見ると、PHPとblowfishのどちらにも非常に精通しておらず、ここでの間違いが同時に発生する可能性があるため、そうすべきかどうかわかりません。そもそも危険で検出が難しい。
それで、私はあなたに2つの(マルチパート)質問を提示します:
- PHPの知識が不足しているので、私を最大限に活用できますか?すでに作成されている実装の1つを実際に使用できますか?
- 代わりに、構成可能な回数だけ呼び出す
sha1()
か、md5()
繰り返し実行する単純なループ関数を作成する必要がありますか?
bcrypt - Windows に bcrypt-ruby をインストールする
make.bat を bin\ フォルダーにコピーしました。コマンド gem install bcrypt-ruby を実行すると、bash.exe が内部コマンドまたは外部コマンドではないことが示されます。
それを解決する方法は?
ruby-on-rails - ロードするそのようなファイルはありません--bcrypt_ext(devise経由)
Rails 3のdevise(current gem)でデータベース認証を使用していますが、ユーザー名/パスワードでログインしようとすると、次のエラーが発生します。
私は以前に「bcrypt-ruby-2.1.2を正常にインストールしました」gemを持っています。
何か案は?また、bundlerにgitリポジトリアドレスを指定してマスターをフェッチしようとしましたが、問題は解決しません。
java - javaのappengineでbcryptを使用するにはどうすればよいですか?
GAE/J で動作する無料の実装はありますか?
ruby-on-rails - Diaspora、bcrypt seg faults の dev db をシードしようとしています。MacOSX
Diaspora https://github.com/diaspora/diaspora/wikiの開発者インスタンスで rake db:seed:dev を実行しようとすると、bcrypt-ruby セグメンテーション エラーが発生します。私は周りを見回しましたが、bcrypt-ruby とセグメンテーション エラーに関連する情報を見つけることができません。誰にもアイデアがありますか、何が起こっているのか知っていますか? 実は私もRuby初心者です。
ruby-on-rails-3 - フォーラムトリップコードの Datamapper コールバック
コンテキスト: フォーラムの tripcode 実装 (http://en.wikipedia.org/wiki/Tripcode) を作成します。基本的に、登録不要の識別のための弱いハッシュ。
「Post」というモデルが 1 つあります。投稿は親子形式で配置され、新しい投稿は親を作成し、返信は親から子を作成します。1 つのフォームがあり、現在、コントローラー/モデルに投稿するフィールドがあり、コンテンツとパスワードのフィールドが含まれています。
基本的なフローは次のとおりです。投稿/返信。パスワード フィールドにパスワードがある場合は、それを取得して bcrypt を実行し、後で比較するためにその結果を password_hash として保存し、表示用のトリップコードを作成します。しかし、頭を打ち負かしてきたエラーが発生しています
私が得ている主なエラーは
未定義のメソッド「プリミティブ?」nil:NilClass の場合
から発しているように見える
lib/active_support/whiny_nil.rb:48:`method_missing' 内
これを処理または回避する方法がわかりません。私は何かをしていないか、コントローラーで何かをチェックしていませんが、まだわかりません。私が得ている他のエラーは、無効な bcrypt ハッシュに起因しますが、これをすぐに複製することはできません。
フック メソッドは、bcrypt-ruby ページのすぐそばにあります。
BCryptHash フィールドの作成 (dm-types) は機能しますが、ローカルホスト サーバーでフォームを処理する時間が 10 倍になり、投稿ごとに処理されるため、bcrypt ハッシュのコストを微調整する方法が必要です。 (たとえば、デフォルトの10ではなく1)、パスワードが存在する場合にのみ実行します。これが、私がこれを行っている理由です。
しかし、これは今のところうまくいきません。私は十分に頭をぶつけて、他の問題に移り、何らかの意見が得られたら戻ってきます。私はレールで作業しているので、主にレールの問題ではありませんが、そのタグを追加しました。
bcrypt - 最適な bcrypt ワークファクター
パスワードハッシュのための理想的なbcryptワークファクターは何でしょうか.
係数 10 を使用すると、ラップトップでパスワードをハッシュするのに約 0.1 秒かかります。非常に忙しいサイトになってしまうと、人々のパスワードをチェックするだけでかなりの作業になります。
おそらく、作業係数 7 を使用して、合計パスワード ハッシュ作業をラップトップ ログインあたり約 0.01 秒に減らす方がよいでしょうか?
ブルート フォースの安全性と運用コストのトレードオフをどのように決定しますか?
ruby-on-rails - shaの代わりにbcryptを使用するようにdeviseとrails3を変更する
認証を処理するためにdeviseを使用するRails3プロダクションアプリがあります。アプリでshaの代わりにbcryptを使用するように変更したいのですが、一方から他方への移行プロセスを説明するリソースが見つかりません。現時点でパスワードが特定の方法で変更されているという事実を処理するには、何らかのフォールバックを設定する必要があると思います...
誰かが前にこれをしましたか?!ヒント、チュートリアル、ウォークスルーなどはありますか?!