str给定python 中a 的 sha256 哈希值:import hashlibhash = hashlib.sha256('foobar'.encode('utf-8'))如何将hash转换为 a UUID?2^256注意:鉴于 hexdigest 具有可能的值并且 UUID 具有 ,显然存在 hexdigest 到 UUID 的多对一映射2^128。预先感谢您的考虑和回复。
2 回答
![?](http://img1.sycdn.imooc.com/5458689e000115c602200220-100-100.jpg)
潇湘沐
TA贡献1816条经验 获得超6个赞
鉴于UUID需要 32 个十六进制字符输入字符串并hexdigest生成 64 个字符,一种简单的方法是对生成的哈希摘要进行子索引以获得适当的字符串长度:
import hashlib
import uuid
hash = hashlib.sha256('foobar'.encode('utf-8'))
uuid.UUID(hash.hexdigest()[::2])
![?](http://img1.sycdn.imooc.com/5f33c0c90001f9ad05720572-100-100.jpg)
白衣非少年
TA贡献1155条经验 获得超0个赞
您可以首先创建它的 KDF 哈希,这允许您在哈希中选择所需的字节长度以将其放入 UUID。
import hashlib
import uuid
uuid.UUID(bytes=hashlib.pbkdf2_hmac('sha256', b'foobar', b'', 10**6, dklen=16))
如果此解决方案适合您,您应该确定 16 字节 KDF 是否会损害您的任何安全要求。而且,您可能也想使用盐( 的第三个参数pbkdf2_hmac)。
添加回答
举报
0/150
提交
取消