python - 我可以散列一个 UUID 以获得更高的熵吗 - 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) 并完成它会更好吗?
谢谢您的帮助
解决方案
不,你不能。
尽管对具有 2 122 个可能值的字符串进行散列处理会得到 128 位结果,但仍然只有 2 122 个可能的结果,因此每个散列后的 UUID 仍然只携带 122 位信息。
要么使用os.urandom(16)
(因为 16 字节足以容纳 128 位熵),要么使用secrets
模块(如果您使用的是 Python 3.6)。
推荐阅读
- sockets - 可以使用插入的服务器证书构建的应用程序吗?
- python - 如何在 pytest 中将全局变量引用为 @pytest.mark.parametrize 值?
- typescript - 如何根据其他字段隐藏/显示按钮?
- java - 我怎样才能将soap api响应的某些字段发送到数据库中
- php - 如何在 PHP 中优化 VIPS 性能
- bash - 使用 sed 或 mv 命令重命名文件
- facebook - Facebook 登录按钮(在 LOCALHOST 上。):登录按钮插件不再适用于 http 页面
- php - 如果键是数字,如何调用json
- c# - 如何在 Unity 中向左滑动按钮?
- autodesk-forge - 当我们上传 .rvt 文件时,我们总是收到错误消息“TranslationWorker-InternalFailure”。文件没有损坏,我们已经检查过了