アップデート:
で見つかった応答:
フォーラムのクレデンシャルを使用して別のページを作成したいので(私はInvision Power Boardを使用しています)、パスワードがどのように機能するかを調べ始めました。
主にmembersテーブルには、members_pass_hashテーブルとmembers_pass_saltテーブルがあり、暗号化は次のように行われます。
/**
* Generates a compiled passhash.
* Returns a new MD5 hash of the supplied salt and MD5 hash of the password
*
* @param string User's salt (5 random chars)
* @param string User's MD5 hash of their password
* @return string MD5 hash of compiled salted password
*/
static public function generateCompiledPasshash( $salt, $md5_once_password )
{
return md5( md5( $salt ) . $md5_once_password );
}
その後、ページの作成を開始しますが、何をしても、パスワードがデータベースのパスワードと一致することはありません。
mysqlでdirectを使用してもMD5(CONCAT(MD5(members_pass_salt),MD5('mypass'))、正しい値が得られません...
コミュニティやipbのフォーラムでも検索しましたが、ここで問題になる可能性のあるものを絞り込むことはできません。
パスワードを生成する私のコードは次のとおりです。
$password = $this->input->post('password');
$md5_once_password = md5($password);
$password_hash = md5( md5( $salt ) . $md5_once_password );
$ saltはデータベースから取得され、それが正しいソルトであることを確認するために、それを自分のページにエコーしました。
IPBコードを続けると、次のこともあります。
if ( $member['members_pass_hash'] == self::generateCompiledPasshash( $member['members_pass_salt'], $md5_once_password ) )
{
return true;
}
else
{
return false;
}
そして、IPBから投稿した最初のコードに戻ると、パスワードがmembers_pass_hashメンバーテーブルのフィールドと照合されていることを意味します。md5( md5( $salt ) . $md5_once_password )
パスワードが一致しないようにするために私が間違っている可能性があることについてのアイデアはありますか?
どこか何かをエンコードしますか?
テスト用のハッシュを使用した更新:
これは正常に動作します:
salt: Do.|O
password: fsk23478cf
hash: f3f3c75110ea9a27a1c01e580676997f
これは機能しません。理由はまだわかりません。
salt: ppxps
password: fsk23478cf!*
hash saved by the forum: d060c2fb78c5b8a9e9d303c7b4fab456
hash created by my aap: 0df0c7f24f7f79bd7ad8e501f5447986
UPDATE2:
パスワードに問題があることを突き止めましたexclamation markが、それでも何が原因で、どのように解決するのかわかりません。
のパスワードは!正しく一致しません。現在、フォーラムが!私が見つけていない特別なことを行っているかどうかを調べようとしています。私が見つけたのは、パスワードフィールドにトリミングしてから、上記のようにmd5を実行することだけです。 。