Petit détail sur l’implémentation de base de PHP, via crypt(): elle demande de générer son propre salt soi-même. Ça pose des problèmes de sécu sympa, vu que personne ne sait générer un salt correctement :-)

Il existe 2/3 librairies qui le font bien, mais sinon, grosso modo, il faut utiliser openssl_random_pseudo_bytes() qui est fait pour ça.