パスワードハッシュについて質問があります。http://crackstation.net/hashing-security.htmですばらしいチュートリアルを見つけました。これは、このコードを使用してパスワードからハッシュを作成する方法です。
$hashed_password = create_hash(form_password);
このコードの問題は、同じパスワードに対して毎回異なるハッシュを作成することです。パスワードにランダムなソルトを追加したためだと思います。
function create_hash($password)
{
// format: algorithm:iterations:salt:hash
$salt = base64_encode(mcrypt_create_iv(PBKDF2_SALT_BYTES, MCRYPT_DEV_URANDOM));
return PBKDF2_HASH_ALGORITHM . ":" . PBKDF2_ITERATIONS . ":" . $salt . ":" .
base64_encode(pbkdf2(
PBKDF2_HASH_ALGORITHM,
$password,
$salt,
PBKDF2_ITERATIONS,
PBKDF2_HASH_BYTES,
true
));
}
そのため、ログイン時にユーザーが入力したパスワードから作成されたハッシュとデータベースから取得されたハッシュを比較することはできません。そのハッシュはデータベースに保存されているものと同じになることはないからです。それができると私が思う唯一の方法は、塩を別の列に保管することです、または私は間違っていますか?
物事も私を悩ませます。速攻の形式は、たとえば、sha256:1000:u9p + OqAZgVkIBtlTBkr9ZxhFvtt + zjcA:PvhJY + oesrdBeD5pjeXMQ/3wficCU0EGです。ハッカーは明らかにこの形式のハッシュを知っているので、このハッシュを作成したアルゴリズムは彼にとって明らかです。データベースが侵害され、これらのハッシュコードが何千も公開されたとしましょう。この形式のハッシュコードを使用すると、セキュリティの問題が発生しませんか?単純なOqAZgVkIBtlTBkr9ZxhFvtt+zjcA:PvhJY + oesrdBeD5pjeXMQ / 3wficは、暗号化メカニズムについて何も明らかにしないため、より良いと思います。