Tworzę system logowania do aplikacji internetowej. Do przechowywania haseł w DB, mam szyfrowanie haseł za pomocą SHA256 następująco:Dekodowanie hash szyfrowanie sha256, znając sól
$salt ="sometext";
$escapedPW="userpass";
$saltedPW = $escapedPW . $salt;
$hashedPW = hash('sha256', $saltedPW);
echo "<center>".$hashedPW."</center>";
w bazie mam przechowywania użytkownika, hasło użytkownika i sól używana do mieszania i zatwierdź logowanie użytkownika. Teraz wykonuję tę funkcję, aby wysłać do użytkownika wiadomość e-mail z Twoim hasłem, ale gdy użytkownik otrzyma wiadomość e-mail, ponieważ jest ona przechowywana w zaszyfrowanym haśle sha256, użytkownik otrzymuje długi ciąg znaków, a nie hasło, które powinien mieć użytkownik. wiedzieć.
Moje pytanie jest takie, że mogę wysłać ci faktyczne hasło użytkownika, a nie szyfrowanie hasła, tzn. Jest jakiś sposób, aby zrobić odwrotność sha256, jeśli znam sól. Jeśli nie jest to możliwe, jaka metoda szyfrowania jest zalecana, aby ukończyć odwrotność klucza szyfrowania i wysłać rzeczywiste hasło do użytkownika w wiadomości e-mail.
Cały punkt skrótu jest taki, że nie można go odwrócić, aby uzyskać oryginalną wartość; nie powinieneś też wysyłać oryginalnego hasła do użytkownika, który go zapomniał - wyślij im jednorazowy, ograniczony w czasie link do resetowania hasła. –
Hash ma być nieodwracalny (przynajmniej w idealnym świecie). Jeśli opierasz system odzyskiwania hasła na cofaniu własnych skrótów, powinieneś przemyśleć to, co robisz. Zasadniczo próbujesz się włamać. +1 na pytanie, ponieważ inne osoby mogą mieć takie same wątpliwości, a twoje pytanie jest bardzo przydatne. – Renan
@Renan Niekoniecznie użytkownik musi znajdować się w DB, a hasło jest wysyłane na osobistą wiadomość e-mail użytkownika. – franvergara66