Python3之uuid模塊


一. 簡介

  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 算法。

 

使用經驗:

  1. Python中沒有基於DCE的,所以uuid2可以忽略
  2. uuid4存在概率性重復,由無映射性,最好不用
  3. 如果在global的分布式計算環境下,最好用uuid1
  4. 若有名字的唯一性要求,最好使用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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM