Python - Почему использование что-нибудь кроме uuid4 () для уникальных строк?

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

28
задан orokusaki 15 October 2012 в 15:47
поделиться

3 ответа

uuid длинные и бессмысленные (например, если вы заказываете по uuid, вы получите бессмысленный результат).

И поскольку он слишком длинный, я бы не хотел помещать его в URL-адрес или открывать его пользователю в любой форме или форме.

3
ответ дан 28 November 2019 в 03:28
поделиться

Ну, иногда вам нужны коллизии. Если кто-то загружает одно и то же изображение дважды, возможно, вы предпочтете сказать им, что это дубликат, а не просто сделать еще одну копию с новым именем.

12
ответ дан 28 November 2019 в 03:28
поделиться

Одна из возможных причин заключается в том, что вы хотите, чтобы уникальная строка была человекочитаемой. UUID просто нелегко прочитать.

5
ответ дан 28 November 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: