哪一个更安全? uuid,binascii.hexlify(os.urandom())或random.SystemRandom()?

时间:2017-03-03 12:41:00

标签: python python-2.7 python-3.x random sequence

我想为为自己注册服务的用户创建唯一的<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,那就太棒了。

1 个答案:

答案 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)

所以从如何生成随机性的角度来看,这些没有区别。