3

私は次のようにクリプトを使用しています:

$pass = crypt($pass, 'd4');

mysql テーブルに対するパスワードの挿入と検証の両方に使用できます。問題は、パスワードが類似している場合、同様の結果が生成されることです。異なるパスワードに対して異なる結果を保証するアルゴリズムはありますか?

4

4 に答える 4

4

自分に合ったハッシュ アルゴリズムを使用hash()して選択します (可能であれば MD5 よりも強力なものを使用しますが、SHA512 までは使用しないでください)。

のマニュアルcrypt()ページには、次のものがあります。

標準の DES ベースの crypt() は、ソルトを出力の最初の 2 文字として返します。また、str の最初の 8 文字のみを使用するため、同じ 8 文字で始まる長い文字列は同じ結果を生成します (同じソルトが使用されている場合)。

同じ結果が得られる理由を説明する必要があります。

于 2011-07-29T21:18:48.767 に答える
2

古いDESベースのモード()を使用しないcrypt()限り、使用しても問題ありません。これを使用する唯一の正当な理由は、そのようなパスワードハッシュを使用するレガシーソフトウェアとの相互運用性のためです。CRYPT_STD_DES

代わりに、、またはモードを使用しCRYPT_BLOWFISHCRYPT_SHA256くださいCRYPT_SHA512。これらは、任意の長いパスフレーズを受け入れ、長いソルトを使用し、複数の反復によるキー強化をサポートする最新のパスワードハッシュアルゴリズムです。

残念ながら、PHPcrypt()インターフェースはやや扱いにくいです。必要なアルゴリズムを明示的に選択する唯一の方法は、正しくフォーマットされた$saltパラメーターを指定することです。つまり、実際のソルトを自分で生成する必要もあります。ただし、独自のパスワードハッシュコードをロールするよりも、おそらくそれでも簡単で安全です。

于 2011-07-29T22:15:15.350 に答える
1

あなたは塩を加えることができます。通常、パスワードを保存している場合は、パスワードを暗号化するのではなく、ハッシュする必要があります。これについては、Google などで検索すると、さまざまな情報が得られます。

于 2011-07-29T21:19:00.107 に答える