io solitamente uso md5 ma gli altri due hash sono simili come funzionamento

se devo inviare la password all'utente ne genero una nuova temporanea con una scadenza e la invio per email, se viene usata entro il periodo di validità la sostituisco alla vecchia, altrimenti scade e non è + utilizzabile

esempio di tabella user

id|username|password|tmppassword|scadtemp

password e tmppassword sono hash md5 e tmppassword la considero valida solo se NOW() è < scadtemp che viene generato insieme a tmppassword

quando controlli se i dati sono giusti puoi aggiungere nella query
SELECT if(md5(passworddelform)=tmppassword, 1, 0) as aggiorna .......
in questo modo se $row['aggiorna'] assume il valore 1 fai
UPDATE user SET password=tmppassword, tmppassword='', scadtemp='' WHERE username='$row['username']'

ciao