15は強度を意味し、15は非常に遅いことを意味します。
この権利を使用するようにしてください。そうしないと、検証やハッシュを頻繁に行うと、パフォーマンスが大幅に低下します。両方の操作が完了するまでに同じ時間がかかります。microtime()
正確なシナリオで実行してください。15はパフォーマンスに適していません。
私は通常7-10を使用します。もっと多くはやり過ぎです...
PS : bcryptSO
についての長い投稿がここにあります。それらを読みます!このように:https ://security.stackexchange.com/questions/4781/do-any-security-experts-recommend-bcrypt-for-password-storageまたはこのhttp://michaelwright.me/php-password-storage
PPS:Local test:
15の強さは約3秒かかります。共有ホストを想像してみてください:)おそらく1秒未満に落ちることはないでしょう。IMOが長すぎます。
実際のコード:
// Is it available on this system?
$Availability = function_exists('crypt') and defined('CRYPT_BLOWFISH');
// And now the code:
$MT = microtime(true); // Time things, so we can get scared
$Password = 'somepassword'; // The password
$Salt = 'addsomevalidsalthere'; // Your salt, must be valid, read docs
$Strength = 15; // Strength (1-99)
// Compute the formatted salt required for crypt
$CryptSalt = sprintf('$2a$%02d$%s$', $Strength, $Salt);
// Hash the use $Password for storage
$Hashed = crypt($Password, $CryptSalt);
// Verify it against the user input $Password
$Verified = crypt($Password, $Hashed) === $Hashed;
// Show the duration of this (2x as it's both in and out)
echo number_format(microtime(true) - $MT, 6), PHP_EOL;
文書化されています。テストに使用します。
ページの読み込みごとにハッシュをテストするようにコードを設計しないでください。それはあなたのサイトのパフォーマンスを殺します。
- 新しいユーザーを作成するとき、またはパスワードを変更するときはハッシュします。
- ユーザーにログインするときに確認します。
- そして残りの部分では、ログインしたページの読み込みごとに高速にテストできるハッシュメカニズムを使用します。
あなたがそれを間違っているときあなたは気付くでしょう。あなたのサイトの読み込み速度で:)
説明:
ブローフィッシュクリプトでハッシュするときは、ソルト、ストレングス、パスワードが必要です。仕様に応じて塩と強度を組み合わせ、crypt()
互換性のある塩を作成します。このソルトはによって翻訳されcrypt()
、売り上げと強さが抽出され、さらに文字2と3に基づくハッシュアルゴリズムが抽出されます。
データベースに、最終的なハッシュ値を保存します。パスワードのハッシュに使用したソルトは保存しないでください。目的が果たせなくなります。hashcrypted値は、逆の操作を実行し、プレーンパスワードがハッシュされたパスワードと一致するかどうかを確認するために必要なものを格納します。塩は中に保存されます、あなたがそれを保存する必要はありません。
ユーザーが登録されたら、パスワードをハッシュして保存します。彼らがログインするとき、あなたは彼らがあなたのフォームで提出する普通のパスワードに対してハッシュされたパスワードを確認します。ハッシュに使用されたハッシュを覚えておく必要はありません。これにより、返されたハッシュにバンドルされているため、その値が何であるかを気にすることなく、各ハッシュでランダムなハッシュを生成できます。詳細については、php.netのcrypt()ページを参照してください。
これが理にかなっているかどうか教えてください。