Stavo giusto per iniziare a leggermi la sua estensione, Mcrypt:
http://www.php.net/manual/en/intro.mcrypt.php

Direi che prima mi studio il Crypt che usi nella tua funzione.
Una cosa non capisco: vedo che crei il salt in modo automatico. Una volta che hai generato la password in questo modo e salvata nel database, come fai a confrontare la password una volta che l'utente si logga? Salvi la salt in un altro campo, così ce l'hai a disposizione da aggiungere alla password?