1

PHP で外部認証をコーディングしたところ、すべてのユーザーの 99% で機能しました。ただし、認証は、絶対数でかなり多い残りの 1% に対しては機能しません。私はすでにIPBを書きましたが、彼らは私を助けることができません.

その理由は、md5 ハッシュを再構築しようとする方法にあることがわかりました。IPB ( https://www.invisionpower.com/support/guides/_/advanced-and-developers/miscellaneous/passwords-in-ipboard-r130 )が推奨する方法とまったく同じ方法を使用していることにもう一度注意してください。次のコード例は、作成された md5 がデータベース内の md5 と異なる例を示しています。ただし、フォーラムでの通常のログインはこのパスワードで機能します。

<?php
    $md5 = 'e69618bbe9850fbaf633014f84b8f040';
    $salt = '}i3#W';
    $plainpass = 'Wv&Txq,LYD-su_6';

    $saltedPassword = md5( md5($salt) . md5($plainpass) );
    echo "Desired result: $md5 , actual result: $saltedPassword";
?>

目的の md5 に到達するにはどうすればよいですか? ユーザーのパスワードまたはユーザーのソルトと関係があると思います。したがって、すべてのユーザーの 99% で機能していますが、この例と他のユーザーでは機能していません。

4

1 に答える 1

0

IPB4 リリースでは、すべての古いパスワードをフグ暗号化に更新します。ただし、これはユーザーがフォーラム スイートにログインした場合にのみ発生します。それまでは、古いパスワード暗号化が残ります。したがって、実際には、それが md5 ソルト化されたパスワードであるかどうか、またはパスワードがブローフィッシュで暗号化されているかどうかを確認する必要があります (以下を参照)。

IPB4 リリースの時点で、パスワード暗号化がソルト付き MD5 から Blowfish に変更されました。

/* $password is the raw password and $salt is the salt returned from fetchSalt */
crypt( $password, '$2a$13$' . $salt );

$2a$13$ は、salt プレフィックスと、変更してはならない事前定義されたコスト ファクターを指します。

于 2017-11-29T16:16:42.433 に答える