一. 簡介
UUID是128位的全局唯一標識符,通常由32字節的字母串表示。它可以保證時間和空間的唯一性,也稱為GUID。
全稱為:UUID--Universally Unique IDentifier 在python 中叫做UUID,在C#中稱為 GUID--Globally Unique IDentifier.
它通過MAC地址,時間戳,命名空間,隨機數,偽隨機數來保證生成ID的唯一性。
UUID主要有五個算法,也就是五種方法來實現。
(1). uuid1()---基於時間戳
由MAC地址,當前時間戳,隨機數字生成。可以保證全球范圍內的唯一性。但是由於MAC地址的使用同時帶來了安全問題,
局域網中可以使用IP來代替MAC。
(2). uuid2()---基於分布式計算環境DCE(python中沒有這個函數)
算法和uuid1相同,不同的是把時間戳的前4位換位POSIX的UID,實際中很少用到該方法。
(3). uuid3()---基於名字和MD5散列值
通過計算名字和命名空間的MD5散列值得到,保證了同一命名空間中不同名字的唯一性,和不同命名空間的唯一性,
但同一命名空間的名字生成相同的uuid。
(4). uuid4()---基於隨機數
由偽隨機數得到,有一定的重復概率,該概率可以計算出來。
(5). uuid5()---基於名字的SHA-1散列值
算法和uuid3()相同,不同的是使用Secure Hash Algorithm 1 算法。
使用經驗:
- Python中沒有基於DCE的,所以uuid2可以忽略
- uuid4存在概率性重復,由無映射性,最好不用
- 如果在global的分布式計算環境下,最好用uuid1
- 若有名字的唯一性要求,最好使用uuid3或uuid5
二. 使用
import uuid # uuid1() >>> print(uuid.uuid1()) 2cf0fa7e-48d9-11e6-93fb-c03fd53413ef # uuid3() >>> print(uuid.uuid3(uuid.NAMESPACE_DNS, 'test')) 45a113ac-c7f2-30b0-90a5-a399ab912716 # uuid4() >>> print(uuid.uuid4()) 08bffbb6-05e1-41c1-8989-6aa07a4a5e5d # uuid5() >>> print(uuid.uuid5(uuid.NAMESPACE_DNS, 'test')) 4be0643f-1d98-573b-97cd-ca98a65347dd
