我可以对 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)。
如果我用类似
的东西生成 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) 并完成它是否更好?
感谢您的帮助
不,你不能。
尽管用 2122 个可能的值对字符串进行散列运算会得到 128 位的结果,但仍然只有 2122 个可能的值结果,所以你的散列 UUID 每个仍然只携带 122 位信息。
要么使用 os.urandom(16)
(因为 16 字节足以用于 128 位熵),要么使用 secrets
模块(如果您使用的是 Python 3.6)。