La clase UUID de Python define cuatro funciones y cada una genera una versión diferente de UUID. Veamos cómo generar UUID basado en hash MD5 y SHA-1 usando uuid3() y uuid5() .
Los hashes criptográficos se pueden usar para generar diferentes ID tomando el identificador NAMESPACE y una string como entrada. Las funciones que soportan la generación de hash criptográfico son:
- uuid3 (espacio de nombres, string): esta función utiliza el valor hash MD5 de los espacios de nombres mencionados con una string para generar una identificación aleatoria de esa string en particular.
- uuid5 (espacio de nombres, string): esta función utiliza el valor hash SHA-1 de los espacios de nombres mencionados con una string para generar una identificación aleatoria de esa string en particular.
El módulo uuid define los siguientes identificadores de espacio de nombres para usar con uuid3() o uuid5() :
NAMESPACE_DNS : se usa cuando la string de nombre es un nombre de dominio completo.
NAMESPACE_URL : se usa cuando la string de nombre es una URL.
NAMESPACE_OID : se usa cuando la string de nombre es un OID ISO.
NAMESPACE_X500 : se usa cuando la string de nombre es un DN X.500 en DER o un formato de salida de texto.
Código #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))
The SHA1 hash value generated ID is : e13a319e-16d9-3ff5-a83c-96564007998e The MD5 hash value generated ID is : dbe3178d-4b83-5024-9b26-9b8e1b280514
Código #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
Nota: la generación de ID es un proceso de 2 pasos. En primer lugar, se lleva a cabo la concatenación de strings y espacios de nombres, luego se proporciona como entrada a la función respectiva para devolver un UUID 128 generado. Si se vuelve a elegir el mismo valor de NAMESPACE con una string similar, el ID generado también será el mismo.
Referencia: https://docs.python.org/2/library/uuid.html