質問

データベース内にあり、このように生成されたソルトがあると仮定します

$ 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 の説明があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top