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のバージョン間で通常ですか?変更ログには、暗号化アルゴリズムの根本的な変更を示唆するものはありません。