首页 » module for python » python模块之uuid

python模块之uuid

 
文章目录

python模块之uuid

UUID是128位的全局唯一标识符,通常由32字节的字符串表示。
它可以保证时间和空间的唯一性,也称GUID,全称为:
UUID ------Universally Unique IDentifier Pyhon中叫UUID
GUID -------Globally Unique IDentifier C#中叫GUID
它通过MAC地址,时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性。
UUID主要有五个算法,也就是五种方法来实现

uuid.uuid1() —- 基于时间戳

由MAC地址、当前时间戳、随机数生成。可以保证全球范围内的唯一性,
但MAC的使用同时带来安全性问题,局域网中可以使用IP来代替MAC。

 >>> print(uuid.uuid1())
777b6cee-5f94-11e9-8517-40a3ccb90178
>>> print(uuid.uuid1())
7827e652-5f94-11e9-a8d8-40a3ccb90178
>>> print(uuid.uuid1())
79a56c7a-5f94-11e9-8fa5-40a3ccb90178

uuid.uuid3(namespace,name) —-

基于名字的MD5散列值

通过计算名字和命名空间的MD5散列值得到,保证了同一命名空间中不同名字的唯一性, 和不同命名空间的唯一性,但同一命名空间的同一名字生成相同的uuid。

>>> print(uuid.uuid3(uuid.NAMESPACE_DNS,'abc.com'))
9c2cb47b-b602-3934-8267-e4944b0f4695
>>> print(uuid.uuid3(uuid.NAMESPACE_DNS,'abc.com'))
9c2cb47b-b602-3934-8267-e4944b0f4695
>>> print(uuid.uuid3(uuid.NAMESPACE_DNS,'abc.com'))
9c2cb47b-b602-3934-8267-e4944b0f4695
>>> print(uuid.uuid3(uuid.NAMESPACE_DNS,'abc.com'))
9c2cb47b-b602-3934-8267-e4944b0f4695

uuid.uuid4() —- 基于随机数

由伪随机数得到,有一定的重复概率,该概率可以计算出来。

>>> print(uuid.uuid4())
7a6eebfa-9fe0-490e-b0d2-a78c50e8830d
>>> print(uuid.uuid4())
6dbde5b0-ffc4-4980-b20e-4c29eef583d7
>>> print(uuid.uuid4())
d0d314b4-9415-472a-a755-baf9263f6c93
>>> print(uuid.uuid4())
27b74ee8-2610-4e4d-b603-e6b1294aab92
>>> print(uuid.uuid4())
a01cb0ae-6c65-4c26-9d55-99bb0df317bd

uuid.uuid5(namespace,name) —- 基于名字的SHA-1散列值

算法与uuid3相同,不同的是使用 Secure Hash Algorithm 1 算法

>>> print(uuid.uuid5(uuid.NAMESPACE_OID,"name_test"))
49c83a4b-9f23-5027-83b2-4a6e46e9da30
>>> print(uuid.uuid5(uuid.NAMESPACE_OID,"name_test"))
49c83a4b-9f23-5027-83b2-4a6e46e9da30

原文链接:python模块之uuid,转载请注明来源!

0