Я видел несколько реализаций генерации уникальных строк для таких вещей, как имена загруженных изображений, идентификаторы сеансов и т. д., и многие из них используют хэши, такие как 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()
.
Итак, с учетом сказанного, почему люди тратят время на random() и другие вещи для уникальных строк и т. д.? Есть ли важная проблема безопасности или другая проблема, связанная с uuid?