Я вижу, что в нескольких реализациях генерации уникальных строк используются такие вещи, как имена загруженных изображений, идентификаторы сеансов и т. Д., И многие из них используют хеши, такие как SHA1 или другие.
Я не подвергаю сомнению законность использования таких методов, как это, а просто причину. Если я хочу уникальную строку, я просто говорю это:
>>> import uuid
>>> uuid.uuid4()
UUID('07033084-5cfd-4812-90a4-e4d24ffb6e3d')
И я с этим покончил. Я не очень доверял, пока не прочитал uuid, поэтому я сделал это:
>>> import uuid
>>> s = set()
>>> for i in range(5000000): # That's 5 million!
>>> s.add(str(uuid.uuid4()))
...
...
>>> len(s)
5000000
Ни одного повторителя (я бы не ожидал, что сейчас он будет учтен, учитывая, что шансы равны 1.108e + 50, но приятно видеть его в действии). Вы могли бы даже половину шансов, просто сделав свою строку, комбинируя 2 uuid4()
s.
Итак, с учетом сказанного, почему люди тратят время на random () и другие вещи для уникальных строк и т. Д.? Есть ли важная проблема безопасности или другая, связанная с uuid?