2

重複の可能性:
PHPパスワードの安全なハッシュとソルト

次のコードを使用して、パスワードをハッシュおよび保存します。

$salt=uniqid(mt_rand(), false);
hash('sha512',$pass+$salt);

私たちの時代には安全ですか?いいえの場合、どのソリューションが優れていますか?crypt()この目的に適していますか、それとも古すぎますか?

4

3 に答える 3

2

塩でハッシュするのが良いです。ただし、ハッシュアルゴリズムを複数回適用する必要があります(数百が適切な球場です)。

この方法でハッシュ関数を「ストレッチ」しても、ハッシュが強化されることはありませんが、ブルートフォース攻撃が遅くなります。

http://en.wikipedia.org/wiki/Key_stretching#Hash_based_key_stretching

于 2012-07-30T19:42:35.000 に答える
2

ハッシュをブルートフォース攻撃しにくくするには、計算時間を長くします。sha512は暗号化ハッシュ関数であり、速度が最適化されています。ユーザーを認証するときにパスワードをハッシュするのは1回だけなので、時間をかけることを恐れないでください。

攻撃者は何百万ものハッシュを計算するので、ハッシュ関数に0.1sハッシュごとに取得させてみませんか?速度が大幅に低下することはありませんが、ブルートフォース攻撃は実行不可能になります。

そうは言っても、外に出て独自のハッシュ関数を記述してこれを行う代わりに、次のようにします。

hash = sha512(password)

for i in range(10000):
  hash = sha512(hash) + salt

return hash

を使用するのようなテスト済みソリューションphpassを使用しますbcrypt

于 2012-07-30T20:00:17.063 に答える
1

これの使用方法によって異なりますが、クレジットカードの詳細や銀行の詳細を保存するには十分ではありませんが(ハッシュするわけではありません!)、特に使用している場合は、Webサイトのパスワードに十分なIMOになります。ソルトとそれは512ハッシュです。

于 2012-07-30T19:42:57.423 に答える