[英]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.