Nasıl PHP bu 2 satır farklı?

1 Cevap php

Biz veritabanında olan bir tuz var varsayarsak ve bu gibi elde edilmiştir

$salt = time();

Bu 2 çizgi arasındaki fark nedir.

$pass1 = hash('sha1', $password . $salt);

$pass2 = hash_hmac('sha1', $password, $salt);

Onlar aynı çıktıyı üretmek değil. hash_hmac 3 params'ı ihtiyacı ise ilki, hash fonksiyonu, 2 params alır. Bu nedenle biz $salt ayrı ayrı (üçüncü param yerine getirmek için) şifre ile birleştirerek farklı olarak ($password . $salt) yaptığımız gibi kullanarak, üçüncü ekstra param alabilirsiniz düşünürdüm 2. satırda. Ama bu kadar basit değil, 2 sonuç farklıdır. Neden? Tam olarak ne oluyor burada?

1 Cevap

HMAC SHA-1 mesaj ve anahtar sıralı ile SHA-1 olarak aynı değildir çünkü. HMAC daha sha1($salt . sha1($salt . $password)) gibi, ama tam olarak değil. Wikipedia HMAC güzel bir tanımı vardır.