簡體   English   中英

在python中將sha256摘要轉換為UUID

[英]Convert sha256 digest to UUID in python

給定 python 中str的 sha256 哈希值:

import hashlib

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

如何將hash轉換為UUID

注意:鑒於 hexdigest 有2^256可能的值並且一個 UUID 有2^128顯然會有一個 hexdigest 到 UUID 的多對一映射。

預先感謝您的考慮和回應。

鑒於UUID需要一個 32 個十六進制字符輸入字符串,而hexdigest產生 64 個字符,一個簡單的方法是對生成的哈希摘要進行子索引,以獲得適當的字符串長度:

import hashlib
import uuid


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

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

您可以先創建它的 KDF 散列,它允許您在散列中選擇所需的字節長度以將其放入 UUID。

import hashlib
import uuid

uuid.UUID(bytes=hashlib.pbkdf2_hmac('sha256', b'foobar', b'', 10**6, dklen=16))

如果此解決方案適合您,您應該確定 16 字節的 KDF 是否會損害您的任何安全要求。 而且,您可能也想使用鹽( pbkdf2_hmac的第三個參數)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM