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