質問
データベース内にあり、このように生成されたソルトがあると仮定します
$ salt = time();
これら2行の違いは何ですか。
$pass1 = hash('sha1', $password . $salt);
$pass2 = hash_hmac('sha1', $password, $salt);
これらは同じ出力を生成しません。 1つ目は、 hash
関数は2つのパラメーターを受け取り、 hash_hmac
は3つのパラメーターを必要とします。そのため、パスワード( $ password。$ salt
)2行目で行ったように。しかし、それほど単純ではありません。2つの結果は異なります。どうして?ここで何が起こっているのですか?
解決
HMAC SHA-1は、メッセージとキーが連結されたSHA-1とは異なるためです。 HMACは sha1($ salt。sha1($ salt。$ password))
に似ていますが、正確ではありません。ウィキペディアには、 HMAC の説明があります。
所属していません StackOverflow