在Python中使用 uuid3() 和 uuid5() 生成哈希 id
Python 的 UUID 类定义了四个函数,每个函数生成不同版本的 UUID。让我们看看如何使用uuid3()和uuid5()基于 MD5 和 SHA-1 哈希生成 UUID。
加密哈希可用于生成不同的 ID,以 NAMESPACE 标识符和字符串作为输入。支持加密哈希生成的函数是:
- uuid3(namespace, 字符串) :此函数使用字符串提到的命名空间的MD5哈希值来生成该特定字符串的随机 id。
- uuid5(namespace, 字符串) :此函数使用字符串提到的命名空间的SHA-1哈希值来生成该特定字符串的随机 id。
uuid 模块定义了以下用于 uuid3() 或 uuid5() 的命名空间标识符:
NAMESPACE_DNS : Used when name string is fully qualified domain name.
NAMESPACE_URL : Used when name string is a URL.
NAMESPACE_OID : Used when name string is an ISO OID.
NAMESPACE_X500 : Used when name string is an X.500 DN in DER or a text output format.
代码#1:
Python3
# Python3 code to demonstrate working
# of uuid3() and uuid5()
import uuid
# initializing a string
url = "https://www.geeksforgeeks.org/fibonacci-sum-subset-elements/"
# using NAMESPACE_URL as namespace
# to generate MD5 hash uuid
print ("The SHA1 hash value generated ID is : ",
uuid.uuid3(uuid.NAMESPACE_URL, url))
# using NAMESPACE_URL as namespace
# to generate SHA-1 hash uuid
print ("The MD5 hash value generated ID is : ",
uuid.uuid5(uuid.NAMESPACE_URL, url))
Python3
# Python3 code to demonstrate working
# of uuid3() and uuid5()
import uuid
# initializing a string
qualified_dns = "www.geeksforgeeks.org"
# using NAMESPACE_DNS as namespace
# to find MD5 hash id
print ("The SHA1 hash value generated ID is : ",
uuid.uuid3(uuid.NAMESPACE_DNS, qualified_dns))
# using NAMESPACE_DNS as namespace
# to generate SHA-1 hash id
print ("The MD5 hash value generated ID is : ",
uuid.uuid5(uuid.NAMESPACE_DNS, qualified_dns))
输出:
The SHA1 hash value generated ID is : e13a319e-16d9-3ff5-a83c-96564007998e
The MD5 hash value generated ID is : dbe3178d-4b83-5024-9b26-9b8e1b280514
代码#2:
Python3
# Python3 code to demonstrate working
# of uuid3() and uuid5()
import uuid
# initializing a string
qualified_dns = "www.geeksforgeeks.org"
# using NAMESPACE_DNS as namespace
# to find MD5 hash id
print ("The SHA1 hash value generated ID is : ",
uuid.uuid3(uuid.NAMESPACE_DNS, qualified_dns))
# using NAMESPACE_DNS as namespace
# to generate SHA-1 hash id
print ("The MD5 hash value generated ID is : ",
uuid.uuid5(uuid.NAMESPACE_DNS, qualified_dns))
输出:
The SHA1 hash value generated ID is : adbed9f7-bbe3-376f-b88d-2018b8f6db07
The MD5 hash value generated ID is : f72cdf8a-b361-50b2-9451-37a997f8675d
注意: ID 生成是两步过程。首先,字符串和命名空间的连接发生,然后作为输入给相应的函数以返回生成的 128 UUID。如果再次选择具有相似字符串的相同 NAMESPACE 值,生成的 ID 也将相同。参考: https://docs。 Python.org/2/library/uuid.html