6

パスワードを暗号化する必要がある登録フォームに取り組んでいます。パスワードに Blowfish 暗号化を使用することが推奨されていると聞きました。PHP crypt() 関数を使用して Blowfish 暗号化を実装するにはどうすればよいですか? また、ログイン用のパスワードは後で取得する予定です。

4

2 に答える 2

7

簡単な答えは、文字$2a$cryptで始まるソルト、2 桁のコストパラメータ$、およびアルファベット./0-9A-Za-zの 22 桁で使用されます。これは、Blowfish 暗号化アルゴリズムをサポートするシステムでのみ機能します。ただし、PHP 5.3 ではネイティブに実装されています。詳細については、 PHP マニュアル — cryptを参照してください。

例:

crypt('rasmuslerdorf', '$2a$07$somesillystringforsalt')

ソルト文字列は、適切なアルゴリズムをトリガーします。2 桁のコストパラメータは、基盤となる Blowfish ベースのハッシュ アルゴリズムの反復回数の 2 を底とする対数であり、[04 – 31] の範囲内である必要があります。例では、07 はアルゴリズムに 2 7または 128 回の反復を使用するように指示します。この数値が高いほど、実行に時間がかかりますが、ユーザー パスワードをハッシュするというコンテキストでは、これは良いことです。

同様の質問に対するこの回答では、BCrypt とは何か、それが Blowfish とどのように関係しているか、なぜそれを使用する必要があるかについて詳しく説明しています。Stack Overflow には、他にも多くの関連トピックがあります。


phpassは優れた使いやすいパスワード ハッシュ フレームワークであり、すべてのシステムで動作し、サポートされている場合は Blowfish を使用し、サポートされていない場合は他のアルゴリズムにフォールバックします。

于 2012-06-24T04:09:44.923 に答える
4

このようなパスワードを暗号化するために、blowfish は必要ありません。登録フォームは、ネットワーク上の攻撃者に対する防御を処理する HTTPS 経由である必要があります。パスワード自体はハッシュする必要があります (決して暗号化されません)。bcrypt は、blowfish に基づく優れたパスワード ハッシュ関数です。ただし、SO での安全なパスワード ストレージに関連する投稿はたくさんあります。

于 2012-06-24T19:38:50.110 に答える