5

Zend ServerCE5.1からZendServerCE 5.5へのアップグレード中に、PHPも5.3.5から5.3.8にアップグレードされました。この移行後、私が取り組んでいるzendアプリケーションのログイン機能が突然壊れました。

デバッグしようとすると、の実装がcrypt()PHPマニュアルを反映していないように見えるか、誤解しています。思い切って推測すると、後者です。

PHPマニュアルの例として使用されているSHA256を使用して、より大きなソルトの一部として16文字の長さのソルトを使用しています。

$password = //string entered at login
$salt = '$5$rounds=250000$1234abcd5678defg$';

入力したパスワードをハッシュした後

$hash = crypt($password, $salt);

戻り値として次のような文字列を取得します。

$5$rounds=250000$1234abcd5678$tI.Oiz.YwWjIwT3K.SLU8SwUZ9J0/odBCkbE6t0igeB

私を困惑させているのは、より大きな部分(上記の1234abcd5678defg)の一部である16文字のソルトが、現在12文字に切り捨てられていることです。

これは意図したとおりですか?このcrypt()関数はまた、以前とは異なる結果を返すように見えます-これはPHPのバージョン間で通常ですか?変更ログには、暗号化アルゴリズムの根本的な変更を示唆するものはありません。

4

1 に答える 1

2

これは私がZendから受け取った応答です:

フィードバックありがとうございます。報告された問題はバグと見なされます。開発者は修正を提供します。これは、製品の今後のリリースの1つに含まれます。

于 2011-10-20T08:36:09.620 に答える