0

ユーザーパスワードを DB に保存する際のパスワード暗号化アルゴリズムとして md5() を削除し、phpassライブラリを使用することにしました。

md5 を使用するシステムでは、生成されるハッシュが同じであるため、Production/Development ダイアドを使用しても問題ありませんでした。そのため、どちらかでテスト ユーザーを作成した場合、同じパスワードがもう一方の環境で機能しました。

私が収集したものから、これは他のタイプのハッシュアルゴリズムと同じではありません.phpass(またはその内部php関数)はプラットフォーム依存のハッシュを作成します(私はハッシュ/暗号化の初心者です).

私の質問は、この状況にどのようにアプローチすべきかということです。prod/dev の別のデータベース? しかし、「2 階」が Web アプリケーションを (その DB と共に) 別のサーバーに移動する必要があると判断した場合はどうなるでしょうか? phpass は同じ (古い) パスワードに対して異なるハッシュを作成するため、ハッシュ化されたパスワードは無効になりませんか?

後で編集:

まあ、開発ハッシュを本番ハッシュにチェックすることは気にしませんでした。それらは異なっていても、「同等である」のように、比較すると「真」になります。ハッシュが異なる場合、一致しないと思いました(md5のように)。

4

3 に答える 3

2

あなたの問題に対する非常に簡単な解決策: 常に最新の安定したバージョンの PHP を使用してください。5.3 の時点で、PHP はcryptアルゴリズムのネイティブ実装を提供するため、プラットフォームに依存しなくなりました。したがって、ハッシュは互換性があるはずです。

于 2011-09-11T15:08:23.890 に答える
0

PHP のタイガー アルゴリズム

このTiger192,4アルゴリズムはハッシュに推奨されることがよくありますが、異なるマシンで異なるハッシュ値を取得できることを発見しました。

不可能!(あなたは言う)

PHP <5.4 は LSB ファーストで実装Tiger、PHP 5.4+ は MSB ファーストで実装さTigerます。どちらが正しい?私には言えません (LSB はtesttigerに一致し、MSB はウィキペディアの例に一致します) が、要点は...ハッシュが移植可能である必要がある場合、または PHP のアップグレードに耐える必要がある場合は使用しないTigerでください(PHP 5.3->5.4 はTigerハッシュ化されたパスワードを壊します)これは保守性に大きな影響を与えます)。

テストする...

echo hash("tiger192,3","The quick brown fox jumps over the lazy cog")."\n".
     hash("tiger192,3","");

MSB: (PHP 5.4.5)
a8f04b0f7201a0d728101c9d26525b31764a3493fcd8458f
3293ac630c13f0245f92bbb1766e16167a4e58492dde73f3

LSB: (PHP 5.3.2)
d7a001720f4bf0a8315b52269d1c10288f45d8fc93344a76
24f0130c63ac933216166e76b1bb925ff373de2d49584e7a

(私の解決策? 別のアルゴリズムを使用し、単体テスト コードに既知のハッシュ テストを埋め込みます)

于 2012-09-24T15:11:48.540 に答える
0

phpass ライブラリを使用することにした特定の理由はありますか? その点については詳しく説明しませんでしたが、単に MD5 よりも安全なアルゴリズムを探している場合は、hash()sha512 のようなアルゴリズムと組み合わせて見てください。

于 2011-09-11T14:55:12.277 に答える