バックグラウンド:
私の小さなサイトにログインを追加したいと思います。これはオンラインのphpアプリケーションであり、将来多くのユーザーアクティビティに耐えられるように構築したいと考えています。
LightOpenIDの実装をさらに検討する前に、通常のログインを追加したいと思います。私が学んでいた本はHeadFirstPHP&MySQL(2008)と呼ばれ、この章の最後のコードはSHA('$user_password')
mysqlクエリの一部として使用されます。
Jeff Atwoodの執筆に興味を持っているので、scryptの時点でbcryptをよく知っています。しかし、scryptのphp実装がなく、それを実行するための専用サーバーがないため、少なくとも今のところbcryptの実装を検討することにしました。
しかし、私は完全にナイーブではありません。非常に謙虚なホスティングリソースを過度に拡張しないように注意する必要があることを知っています。phpアプリ自体は、リソースに関して他の何よりも常に最初に来る必要があります。
Andrew Mooreの方法は素晴らしいようです(ただし、ホストが使用するphp 5.2.17に実装する方法を確認する必要があります)。ハードウェア速度のヒントが付属しています。
200〜250ミリ秒の作業が発生するラウンド数を選択する必要があります。bcryptが安全である理由の一部はそれが遅いということです。その特性を維持するラウンドの数を確保する必要があります。–アンドリュー・ムーア
別のユーザーは、実行するmicrotime()
とBcrypt(9)に0.314が与えられると述べています。これは、ほぼ最適です。
質問:
私は自由に使える非常に謙虚なリソースしか持っておらず、それらを最大限に活用したいので、ほとんどをphpアプリ自体に任せたいので、他のものの代わりにBcrypt(4)を使用する方が良いでしょうか?
Bcrypt(4)はほぼ瞬時にtrueを返しますが、それでもムーアが話している特徴を維持していますか?(GPUのブルートフォーシングを困難にするRAMに関する部分でしょうか?)この時点で?
この状況でBcrypt(4)が勝つことを期待しますが、私は地獄を知っていますか?:p