我可以哈希UUID以获得更高的熵-Python

时间:2018-11-19 15:15:33

标签: python random token uuid entropy

如果我生成带有

之类的UUID
ID = uuid.uuid4()

我得到一个具有122位熵的128位字符串。

但是我想要一个带有超过128位熵的字符串。

如果我通过散列函数将此uuid放入,字符串的熵将如何改变。

例如:

ID = uuid.uuid4()
ID = HASHFUNC(ID)

甚至:

ID = uuid.uuid4()
Salt = someString
ID = HASHFUNC(ID+Salt)

仅使用os.urandom(32)并完成该操作是否更好?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

不,你不能。

尽管使用2 122 可能的值对字符串进行哈希处理将为您提供128位结果,但是仍然只有2 122 可能的结果,因此您哈希的UUID仍然仅每个都携带122位信息。

要么使用collection(因为16个字节足以用于128位熵),要么使用secrets模块(如果您使用的是Python 3.6)。