Какой из них более безопасен в использовании? идентификатор UUID, binascii.hexlify (os.urandom()) или случайный.SystemRandom ()?

Я хочу создать уникальный <client-key> и <client-secret> для пользователей, которые регистрируются для службы.

Итак, я искал то же самое и придумал следующие варианты:

это глупый вопрос но я хочу знать то, что реализация более безопасна для использования (с надлежащим объяснением)? Почему? И в чем преимущества его использования перед другими?

Примечание:

насколько я знаю, random.SystemRandom() использует os.urandom(x). Так что сравнение в основном между uuid и random.SystemRandom().

вот что я пробовал так далеко:

1)

import random
temp = random.SystemRandom()
random_seq = ''.join(temp.choice(CHARACTER_SET) for x in range(x))
>>> 'wkdnP3EWxtEQWnB5XhqgNOr5RKL533vO7A40hsin'

2)

import uuid
str(uuid.uuid4())
>>> 'f26155d6-fa3d-4206-8e48-afe15f26048b'

Я не уверен в ее решении. Поэтому любая помощь будет оценена по достоинству.


П. С. Было бы здорово, если какое-либо решение доступно для Python 2.x и 3.x.

1 ответов


Это не имеет никакого значения, все из них используют os.urandom оба в Python 3 и 2. uuid4 просто создает новый UUID объект, проходя в 16 случайный байт для этого:

def uuid4():
    """Generate a random UUID."""
    return UUID(bytes=os.urandom(16), version=4)

Итак, с точки зрения как генерируется случайность, они не отличаются.