För ett salt är unikhet viktigare än längd och förutsägbarhet. Du antar att angriparen har saltet.
En universellt unik identifierare (UUID) skulle vara bäst, och det finns exempel som genererar universellt unika identifierare på dokumentsidan för php uniqueid() fungera. En UUID har fördelen framför en slumpmässig sträng genom att den är läsbar för människor och en fast längd, därför kan du lagra den i ett varchar-fält och använda ett unikt index för att säkerställa att det aldrig finns dubbletter.
Hashing av tiden med MD5 är en vanlig metod för att generera unika värden eftersom den har en fast längd och är läsbar för människor. Det är dock mer meningsfullt att bara generera en slumpmässig sträng med fast längd och koda den till hex själv. Hashes är inte designade för unika så mycket som de är designade för att inte vara reversibla. Att använda en hashfunktion garanterar kollisioner, även om det blir färre kollisioner med SHA1 än MD5.
Längden på saltet är egentligen bara en faktor eftersom ju längre saltet är, desto mer sannolikt är det att det är universellt unikt.