为了账号安全,请及时绑定邮箱和手机立即绑定

在python中将sha256摘要转换为UUID

在python中将sha256摘要转换为UUID

阿波罗的战车 2023-07-11 14:11:01
str给定python 中a 的 sha256 哈希值:import hashlibhash = hashlib.sha256('foobar'.encode('utf-8'))如何将hash转换为 a UUID?2^256注意:鉴于 hexdigest 具有可能的值并且 UUID 具有 ,显然存在 hexdigest 到 UUID 的多对一映射2^128。预先感谢您的考虑和回复。
查看完整描述

2 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

鉴于UUID需要 32 个十六进制字符输入字符串并hexdigest生成 64 个字符,一种简单的方法是对生成的哈希摘要进行子索引以获得适当的字符串长度:


import hashlib

import uuid



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


uuid.UUID(hash.hexdigest()[::2])


查看完整回答
反对 回复 2023-07-11
?
白衣非少年

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)。


查看完整回答
反对 回复 2023-07-11
  • 2 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信