Почему весь рабочий sha1 тестируется и распределяется равномерно:
substr(sha1(uniqid('moreentropyhere')),0,5);
Я использовал это для генерации миллионов и миллионов уникальных жидкостей для шардинга таблиц, без коллизий и удивительно равномерного распределения независимо от длины, которую выиспользуйте ...
вы можете даже использовать двоичную форму хэша sha1 для базы 64:
base64_encode(sha1(uniqid('moreentropyhere'), true))
, чтобы ограничить символы, вы можете использовать регулярное выражение:
substr(preg_replace('~[^a-km-np-z2-9]~','',strtolower(base64_encode(sha1(uniqid(),true)))),0,6)
Здесь мы ограничиваем 0,1, l (букву) и o (букву) из строки, торгуя небольшой энтропией, чтобы избежать путаницы (и билетов на обслуживание) во время входа для всех возрастов ...