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

Moh*_*sin 9 python random sequence python-2.7 python-3.x

我想创建独特<client-key><client-secret>对谁登记自己的服务用户.

所以,我正在寻找相同的并提出这些选项:

这是一个愚蠢的问题,但我想知道哪个实现使用起来更安全(有正确的解释)?为什么?使用它比其他人有什么好处?

注意:

AFAIK,random.SystemRandom()用途os.urandom(x).所以比较主要是uuidrandom.SystemRandom().

这是我到目前为止所尝试的:

1)

import random
temp = random.SystemRandom()
random_seq = ''.join(temp.choice(CHARACTER_SET) for x in range(x))
>>> 'wkdnP3EWxtEQWnB5XhqgNOr5RKL533vO7A40hsin'
Run Code Online (Sandbox Code Playgroud)

2)

import uuid
str(uuid.uuid4())
>>> 'f26155d6-fa3d-4206-8e48-afe15f26048b'
Run Code Online (Sandbox Code Playgroud)

我不确定解决方案.所以,任何帮助将不胜感激.


PS 如果Python 2.x和3.x都有任何解决方案,那就太棒了.

Jim*_*ard 8

它不会使任何区别,所有的都是它们的使用os.urandom在Python 3两个和2 uuid4实例化一个新的UUID通过传递对象16随机字节吧:

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

因此,从如何产生随机性的观点来看,这些没有区别.