Il sale non ha bisogno di essere lungo 8 caratteri. Può essere più lungo, e la mia versione di python la troncerà a 16 byte.
Per memorizzare le password usando crypt, crea un salt casuale per ogni utente e memorizza il risultato.
Un esempio:
python -c "import crypt; print crypt.crypt('password', '\\3456789012345678901234567890')"
$6$1234567890123456$YfUD.j5zIFtfV6VgikPof2dzCCCZwL2YDraBX4HXi.J7iNq24667epYUCZGxExqOmHTnPWybzfYaynT29vKXJ/
python -c "import crypt; print crypt.crypt('insecure', '\\CsGd8FRcMSMV6VgikPof2dzCC0')"
$6$12CsGd8FRcMSMV6V$kSCxbE5y6ihnYHJ4UmbqUm6ohnhAmUYKaZQOpLQuXVXXzJuz4deR7pueK8vSx0f0OqtyhI9i0nd/Devv5bPT31
Nell'ultimo esempio, mostrerà il sale ( $6$12CsGd8FRcMSMV6V
) e la password con hash ( kSCxbE5y6ihnYHJ4UmbqUm6ohnhAmUYKaZQOpLQuXVXXzJuz4deR7pueK8vSx0f0OqtyhI9i0nd/Devv5bPT31
). Per verificare la password in un secondo momento, è necessario eseguire di nuovo l'hash con lo stesso salt (è necessario salvare il sale nel database) e confrontarlo con il valore memorizzato nel database.