Per un sale, l'unicità è più importante della lunghezza e della prevedibilità. Presumi che l'attaccante abbia il sale.
Un identificatore univoco universale (UUID) sarebbe il migliore, e ci sono esempi che generano identificatori univoci universali nella pagina del documento per il php uniqueid() funzione. Un UUID ha il vantaggio rispetto a una stringa casuale in quanto è leggibile dall'uomo e una lunghezza fissa, quindi puoi memorizzarlo in un campo varchar e utilizzare un indice univoco per assicurarti che non ci siano mai duplicati.
L'hashing del tempo con MD5 è un metodo comune per generare valori univoci perché ha una lunghezza fissa ed è leggibile dall'uomo. Tuttavia, ha più senso generare una stringa casuale di lunghezza fissa e codificarla tu stesso in esadecimale. Gli hash non sono progettati per l'unicità tanto quanto sono progettati per non essere reversibili. L'uso di una funzione di hashing garantisce le collisioni, anche se ci saranno meno collisioni con SHA1 rispetto a MD5.
La lunghezza del sale è davvero solo un fattore perché più lungo è il sale, più è probabile che sia universalmente unico.