Voici la routine que j'utilise pour aléatoire base62s de n'importe quelle longueur...
Appelant gen_uuid()
rendements des chaînes de caractères comme WJX0u0jV, E9EMaZ3P
etc.
Par défaut, ceci renvoie à 8 chiffres, donc un espace de 64^8 soit environ 10^14,
c'est assez souvent de faire des collisions assez rare.
Pour une plus grande ou plus petite chaîne, de passer en $len comme souhaité. Pas de limite en longueur, comme je l'ai ajouter jusqu'à satisfaction [jusqu'à la limite de sécurité de 128 caractères, qui peut être supprimé].
Remarque, l'utilisation aléatoire de sel à l'intérieur de l'md5 [ou sha1 si vous préférez], de sorte qu'il ne peut pas facilement être de la rétro-ingénierie.
Je n'ai pas trouvé fiable base62 conversions sur le web, d'où cette approche pour le décapage de caractères à partir de la base64 résultat.
Utiliser librement sous la licence BSD,
profiter,
gord
function gen_uuid($len=8)
{
$hex = md5("your_random_salt_here_31415" . uniqid("", true));
$pack = pack('H*', $hex);
$uid = base64_encode($pack); // max 22 chars
$uid = ereg_replace("[^A-Za-z0-9]", "", $uid); // mixed case
//$uid = ereg_replace("[^A-Z0-9]", "", strtoupper($uid)); // uppercase only
if ($len<4)
$len=4;
if ($len>128)
$len=128; // prevent silliness, can remove
while (strlen($uid)<$len)
$uid = $uid . gen_uuid(22); // append until length achieved
return substr($uid, 0, $len);
}