如果我生成带有
之类的UUIDID = uuid.uuid4()
我得到一个具有122位熵的128位字符串。
但是我想要一个带有超过128位熵的字符串。
如果我通过散列函数将此uuid放入,字符串的熵将如何改变。
例如:
ID = uuid.uuid4()
ID = HASHFUNC(ID)
甚至:
ID = uuid.uuid4()
Salt = someString
ID = HASHFUNC(ID+Salt)
仅使用os.urandom(32)并完成该操作是否更好?
感谢您的帮助
答案 0 :(得分:2)
不,你不能。
尽管使用2 122 可能的值对字符串进行哈希处理将为您提供128位结果,但是仍然只有2 122 可能的结果,因此您哈希的UUID仍然仅每个都携带122位信息。
要么使用collection
(因为16个字节足以用于128位熵),要么使用secrets
模块(如果您使用的是Python 3.6)。