我可以对 UUID 进行哈希处理以获得更高的熵吗 - Python

Can I hash a UUID for higher entropy - Python

如果我用类似

的东西生成 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) 并完成它是否更好?

感谢您的帮助

不,你不能。

尽管用 2122 个可能的值对字符串进行散列运算会得到 128 位的结果,但仍然只有 2122 个可能的值结果,所以你的散列 UUID 每个仍然只携带 122 位信息。

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