Sto creando un sistema di login per un'applicazione web. Per memorizzare le password nel DB, sto crittografia delle password utilizzando sha256 come segue:Decodifica crittografia hash sha256, conoscendo il sale
$salt ="sometext";
$escapedPW="userpass";
$saltedPW = $escapedPW . $salt;
$hashedPW = hash('sha256', $saltedPW);
echo "<center>".$hashedPW."</center>";
Nel database sto l'archiviazione l'utente, la password dell'utente e il sale usato per fare hash e convalidare login dell'utente. In questo momento sto facendo la funzionalità per inviare all'utente una e-mail con la tua password, ma quando l'utente riceve l'e-mail, poiché è memorizzata nella password crittografata sha256, l'utente riceve una stringa lunga e non la password che l'utente è supposto sapere.
La mia domanda è un modo in cui posso inviarti la password utente effettiva e non la crittografia della password, cioè, c'è un modo per fare il contrario di sha256 se conosco il sale ?. Se non è possibile, quale metodo di crittografia è consigliato per completare il retro della chiave di crittografia e inviare la password effettiva all'utente in un'email.
L'intero punto di un hash è che non è possibile invertire per ottenere il valore originale; né si deve inviare la password originale all'utente che l'ha dimenticata - si invia loro un collegamento una tantum limitato nel tempo per reimpostare la propria password –
Un hash dovrebbe essere irreversibile (almeno in un mondo ideale). Se stai basando il tuo sistema di recupero della password per invertire i tuoi stessi hash, dovresti ripensare a quello che stai facendo. Stai praticamente cercando di hackerarti. +1 alla domanda, però, dato che gli altri potrebbero avere lo stesso dubbio, e la tua domanda è abbastanza utile. – Renan
@Renan Non necessariamente, l'utente deve essere nel DB e la password viene inviata all'e-mail personale dell'utente. – franvergara66