在python中将sha256摘要转换为UUID

str给定python 中a 的 sha256 哈希值:


import hashlib


hash = hashlib.sha256('foobar'.encode('utf-8'))

如何将hash转换为 a UUID?


2^256注意:鉴于 hexdigest 具有可能的值并且 UUID 具有 ,显然存在 hexdigest 到 UUID 的多对一映射2^128。


预先感谢您的考虑和回复。


阿波罗的战车
浏览 143回答 2
2回答

潇湘沐

鉴于UUID需要 32 个十六进制字符输入字符串并hexdigest生成 64 个字符,一种简单的方法是对生成的哈希摘要进行子索引以获得适当的字符串长度:import hashlibimport uuidhash = hashlib.sha256('foobar'.encode('utf-8'))uuid.UUID(hash.hexdigest()[::2])

白衣非少年

您可以首先创建它的 KDF 哈希,这允许您在哈希中选择所需的字节长度以将其放入 UUID。import hashlibimport uuiduuid.UUID(bytes=hashlib.pbkdf2_hmac('sha256', b'foobar', b'', 10**6, dklen=16))如果此解决方案适合您,您应该确定 16 字节 KDF 是否会损害您的任何安全要求。而且,您可能也想使用盐( 的第三个参数pbkdf2_hmac)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python