Для соли уникальность важнее, чем длина и предсказуемость. Вы предполагаете, что у атакующего есть соль.
Было бы лучше использовать универсально уникальный идентификатор (UUID), и есть примеры, которые генерируют универсально уникальные идентификаторы на странице документа для функции php uniqueid () . UUID имеет преимущество перед случайной строкой в том, что она удобочитаема и имеет фиксированную длину, поэтому вы можете сохранить ее в поле varchar и использовать уникальный индекс, чтобы гарантировать отсутствие дубликатов.
Хэширование времени с помощью MD5 является распространенным методом генерации уникальных значений, поскольку он имеет фиксированную длину и удобочитаем для человека. Однако, имеет больше смысла просто генерировать случайную строку фиксированной длины и кодировать ее в шестнадцатеричный код самостоятельно. Хэши не рассчитаны на уникальность настолько, насколько они созданы, чтобы не быть обратимыми. Использование функции хеширования гарантирует коллизии, хотя коллизий с SHA1 будет меньше, чем с MD5.
Длина соли действительно является одним из факторов, потому что чем длиннее соль, тем более вероятно, что она будет универсально уникальной.