在Python中创建GUID(全局唯一标识符)或UUID(通用唯一识别码)主要通过内置的uuid
模块来实现。UUID是一个128位的数字,通常用于确保在分布式系统中的唯一性。
UUID是一个由32个十六进制数字组成的标识符,通常以连字符分为五组,形式为8-4-4-4-12。例如:123e4567-e89b-12d3-a456-426614174000。
Python的uuid
模块提供了几种方法来生成不同版本的UUID:
uuid4()
函数生成一个完全随机的UUID。import uuid
random_uuid = uuid.uuid4()
print(str(random_uuid))
uuid1()
函数生成一个基于主机ID和当前时间戳的UUID。import uuid
time_based_uuid = uuid.uuid1()
print(str(time_based_uuid))
uuid3()
或uuid5()
函数基于命名空间和名称生成UUID。import uuid
namespace_uuid = uuid.uuid3(uuid.NAMESPACE_DNS, 'example.com')
name_based_uuid = uuid.uuid5(uuid.NAMESPACE_DNS, 'example.com')
print(str(namespace_uuid))
print(str(name_based_uuid))
UUID广泛应用于数据库、分布式系统、网络通信等领域,用于确保数据的唯一性,避免冲突。
原因:理论上,UUID的生成算法保证了其唯一性,但在极少数情况下,由于随机数生成器的缺陷或恶意攻击,可能会导致UUID重复。
解决方法:
uuid
模块是最新的。import uuid
import secrets
secure_uuid = uuid.UUID(bytes=secrets.token_bytes(16))
print(str(secure_uuid))
原因:UUID的标准格式是32个十六进制数字,可能不适合某些需要短标识符的场景。
解决方法:
import uuid
import hashlib
uuid_str = str(uuid.uuid4())
short_id = hashlib.sha256(uuid_str.encode()).hexdigest()[:10]
print(short_id)
uuid
模块:https://docs.python.org/3/library/uuid.html领取专属 10元无门槛券
手把手带您无忧上云