Register.phpハッシュされたパスワードが文句を言わない
$query = "
INSERT INTO users(
email,
pass,
salt
) VALUES (
:email,
:password,
:salt
)
";
$salt = dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647));
$password = hash('sha256', $_POST['password'] . $salt);
for($round = 0; $round < 65536; $round++)
{
$password = hash('sha256', $password . $salt);
}
$query_params = array(
':email' => $_POST['email'],
':password' => $password,
':salt' => $salt
);
Login.php
if($row)
{
$check_password = hash('sha256', $_POST['password'] . $row['salt']);
for($round = 0; $round < 65536; $round++)
{
$check_password = hash('sha256', $check_password . $row['salt']);
}
if($check_password === $row['pass'])
{
// If they do, then we flip this to true
$login_ok = true;
}
}
パスワードのログイン/ユーザ名は、これが機能しない理由を把握することはできませんので、正しいです。データベースでは、ハッシュされたパスの長さは、わからないsaltパスワードと同じです。
組み込み関数 'password_hash()'と 'password_verify()'の代わりに組み込み関数を使うのはなぜですか? –
まず、* salt *および* pass *列の長さがそれぞれsaltおよびhashhedパスワードを保持するのに十分な長さかどうかを確認します。次に、保存された(ハッシュされた)パスワードとログイン(ハッシュされた)パスワードが同じかどうかを手動でチェックするために 'echo $ check_password;'を実行します。 –