Creez un formular simplu de înregistrare și conectare folosind PHP. La înregistrare, creez hash folosind funcția password_hash() și apoi îl stochez în DB. La momentul conectării, inițial ceea ce am făcut a fost creat un nou hash folosind din nou funcția password_hash() și apoi l-am comparat cu hash-ul Parola stocat.
Acest lucru a eșuat tot timpul deoarece, după cum am înțeles acum, o sare nouă este folosită de fiecare dată când creați un hash de parolă folosind funcția password_hash(). După ce am cercetat, am știut că ar trebui să folosești funcția PHP password_verify(<plain_text_password>,<password_fetched_from_DB>).
Ceea ce nu înțeleg este cum de funcția password_verify cunoaște valoarea de sare care a fost folosită mai devreme la momentul înscrierii? Dacă sarea nu este cunoscută, atunci password_verify ar trebui să eșueze, de asemenea, ca și funcția password_hash atunci când este utilizată pentru comparație.
Am citit mai departe despre asta și ceea ce am știut este că atunci când funcția password_hash() este folosită pentru a crea hash-ul, stochează și valoarea de sare în interiorul hash-ului? De exemplu, dacă hash creat este abcde12345, atunci ar putea 12345 să fie valoarea sării?
Dacă acest lucru este adevărat, atunci, privind un hash, putem spune că „această” parte a hashului este de fapt valoarea sării? Valoarea sării este întotdeauna plasată la o anumită poziție în hash? Aș aprecia dacă cineva poate împărtăși un exemplu.