scusa sarò un po' gnucco ma da quanto ho capito per te:

1) le password non andrebbero criptate ma salt-ate (che se non erro è una criptatura, ma ho cercato ma non ho capito bene il significato) ed hash-ate
2) questo deduco perchè la criptatura è reversibile mentre l'hash (e salt che sia) no
3) questo esempio l'ho preso dal sito ufficiale. Intendi una cosa simile?

Codice PHP:
<?php
function eliteEncrypt($string) {
    
// Create a salt
    
$salt md5($string."%*4!#$;\.k~'(_@");
   
    
// Hash the string
    
$string md5("$salt$string$salt");
   
    return 
$string;
}
?>
4) Così però non potrai mai recuperare la password