Какой из них более безопасен в использовании? идентификатор UUID, binascii.hexlify (os.urandom()) или случайный.SystemRandom ()?
Я хочу создать уникальный <client-key>
и <client-secret>
для пользователей, которые регистрируются для службы.
Итак, я искал то же самое и придумал следующие варианты:
- uuid
- binascii.hexlify (os.urandom (x))
-
случайные.SystemRandom ()
это глупый вопрос но я хочу знать то, что реализация более безопасна для использования (с надлежащим объяснением)? Почему? И в чем преимущества его использования перед другими?
Примечание:
насколько я знаю,
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)
Итак, с точки зрения как генерируется случайность, они не отличаются.