我想为为自己注册服务的用户创建唯一的<client-key>
和<client-secret>
。
所以,我正在寻找相同的东西并提出了这些选择:
这是一个愚蠢的问题,但我想知道哪种实现使用更安全(有正确的解释)?为什么?使用它比其他人有什么好处?
注意:
AFAIK,
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'
我不确定解决方案。所以,任何帮助将不胜感激。
的 P.S。
如果有任何解决方案可用于Python 2.x和3.x,那就太棒了。
答案 0 :(得分:5)
它没有任何区别,所有都在Python 3和2中使用os.urandom
uuid4
只是instantiates a new UUID
object by passing in 16
random bytes:
def uuid4():
"""Generate a random UUID."""
return UUID(bytes=os.urandom(16), version=4)
所以从如何生成随机性的角度来看,这些没有区别。