データベースにあり、このように生成されたソルトがあると仮定します
$salt = time();
これらの2行の違いは何ですか。
$pass1 = hash('sha1', $password . $salt);
$pass2 = hash_hmac('sha1', $password, $salt);
それらは同じ出力を生成しません。最初のもの、hash
関数は 2 つのパラメーターを取り、hash_hmac
3 つのパラメーターが必要です。$salt
したがって、2 行目で行ったようにパスワード ( ) と連結するのではなく、(3 番目のパラメーターを満たすために) 個別に使用することで、3 番目の追加パラメーターを取得できると考えるでしょう$password . $salt
。しかし、それほど単純ではなく、2 つの結果は次のようになります。違う。なんで?ここで正確に何が起こっているのですか?