問題タブ [jbcrypt]
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.
java - jbcrypt 使用時のパフォーマンスの変動と低下
プロジェクトでパスワードをハッシュするために jbcrypt を使用しています。私が使用しているハードウェアでパスワードを検証するときのパフォーマンスは約 500 ミリ秒です (log_rounds を 12 に設定)。ただし、通常の使用でしばらくすると、パフォーマンス時間は突然 15 秒に低下します。低下は非常に急激で、蓄積はなく、プロセスが再開されるまで一定のままです。
プロファイリングは、余分な時間が key(..) メソッドで使用されていることを示しています。
ソース: http://jbcrypt.googlecode.com/svn/tags/jbcrypt-0.3m/src/main/java/org/mindrot/jbcrypt/BCrypt.java
このメソッドは、xor、シフトなどの基本的な関数を使用してハッシュを計算するだけです。オブジェクトの割り当て、外部リソースの使用、乱数の生成などはありません。
同じプロセス内の他の機能のパフォーマンスは低下しません。メモリ割り当ては安定しており、低いです。フル GC は含まれません。
誰かがこれを前に見たことがありますか、またはなぜこれが起こるのかの手がかりはありますか? 他の状況にある程度依存する可変パフォーマンスは理解できましたが、これは約 500ms からの非常に突然の安定した低下です。約15000ミリ秒まで。
bcrypt - Spring Security で Bcrypt でエンコードされたパスワードをデコードして、ユーザー アカウントを非アクティブ化する
Spring Hibernate MVC で Web アプリケーション プロジェクトに取り組んでいます。Spring セキュリティの Bcrypt アルゴリズムを使用して、エンコードされたパスワードをデータベースに保存しています。
ここで、エンコードされたパスワードをデコードして使用アカウントを非アクティブ化したいと考えています。ユーザーがアカウントを非アクティブ化する前に、確認するためにユーザーの電子メールとパスワードを提供しています。デコードされたパスワードの取得に問題があります。
誰かがそれから抜け出すのを手伝ってくれますか、それとも私の要件に対する代替ソリューションですか?
spring-security - Spring Security の BCrypt 実装は脆弱ですか?
当社のセキュリティ監査により、bcrypt ハッシュのプレフィックスが「$2a$」であることがわかりました。[1] および [2] によると、これは古い脆弱な bcrypt 実装が使用されていることを示している可能性があります。
だから - ここで私の質問:
- Spring Security の bcrypt 実装には脆弱性が含まれていますか?
- Spring Security は「$2x$」および「$2y$」プレフィックスをサポートしていますか?
参考文献:
[1] http://blog.ircmaxell.com/2012/12/seven-ways-to-screw-up-bcrypt.html
[2] http://www.openwall.com/lists/oss-security /2011/06/21/16
bcrypt - jBcrypt: BCrypt.checkpw に突然 30 倍の時間がかかります
私たちの Web アプリケーションでは、パスワードのハッシュにjBcryptを使用しています。パスワードをハッシュするとき、 13個のlog_roundsを使用します。
通常、BCrypt.checkpw()には約 1 秒かかります。しかし、ときどき (数日後)、突然速度が低下し始め、その時点から約 30 秒かかり、通常の速度に回復しません。ここで役立つのは、Tomcat を再起動することだけです。
たとえば、CPU 負荷が高い場合や GC が実行されている場合など、それが時々発生したかどうかは不思議ではありません。しかし、そうではなく、突然遅くなり始めます。ログイン プロセスのみが影響を受けますが、アプリケーションの残りの部分は依然として高速です。また、決定可能なメモリ リークやその他のパフォーマンスの問題もありません。遅いのは BCrypt.checkpw() だけです。スレッド ダンプは、時間がBCrypt.checkpwと後続のメソッド呼び出し、特にBCrypt.encipherによって消費されていることを示しています。
ここSOで同様の問題を1つだけ見つけましたが、この場合、複数のクラスローダーが問題になることはありません。
ここで何が起こっているのか誰にも分かりませんか?
java - jBcrypt を使用して php password_hash() を使用して作成された passwordhash+salt を検証できません
認証モジュールを PHP から Java に移行しています。現在、パスワード hash+salt は BCrypt アルゴリズムを使用してデータベースに保存されています。この値は、PHP の password_hash() 関数を使用して生成されます。平文のパスワードを検証するために、PHP の password_verify() 関数を使用しています。
PHP コード
この認証モジュールを Java に移行するために、jBCrypt-0.4.jarを使用してjBCryptライブラリを使用しています。
Java コード
ただし、php から生成された passwordhash+salt は Java で検証されていません。文字列 'abcd' の場合、生成されるハッシュ + ソルトは次のとおりです。
PHP - $2y$10$SA4iLMAniuNO6p9P1ZJElePaJvlN5eHGZ2dDt2Mutle4FQr1OY4hC
Java - $2a$10$YnqJT5NPCPTI8qKBbLfgIOIOW4eckdbE1R85tJGNRUJKmxz1TLkWG
PHPを使用して生成された文字列をJavaで照合しようとしたとき
私は以下を取得していました
スレッド「メイン」の例外 java.lang.IllegalArgumentException: org.mindrot.jbcrypt.BCrypt.hashpw(BCrypt.java:665) の無効なソルト リビジョン org.mindrot.jbcrypt.BCrypt.checkpw(BCrypt.java:764)。 ..`
両方に互換性を持たせるにはどうすればよいですか?