資料:python官方doc:《20.15. uuid — uuid objects according to rfc 4122》
uuid的演算法介紹:《a universally unique identifier (uuid) urn namespace》
概述: uuid
是128位的全域性唯一識別符號,通常由32位元組的字串表示。
它可以保證時間和空間的唯一性,也稱為guid,全稱為:
uuid —— universally unique identifier
python 中叫 uuid
guid —— globally unique identifier c# 中叫 guid
它通過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。
編碼方法:
# -*- coding: utf-8 -*-
import uuid
name = "test_name"
namespace = "test_namespace"
print uuid.uuid1() # 帶參的方法參見python doc
print uuid.uuid3(namespace, name)
print uuid.uuid4()
print uuid.uuid5(namespace, name)
Python使用UUID庫生成唯一ID
資料 python官方doc 20.15.uuid uuid objects according to rfc 4122 uuid的演算法介紹 a universally unique identifier uuid urn namespace 概述 uuid 是128位的全域性唯一識別符號,通常由...
Python使用UUID庫生成唯一ID
uuid是128位的全域性唯一識別符號,通常由32位元組的字串表示。它可以保證時間和空間的唯一性,也稱為guid,全稱為 uuid universally unique identifier,python 中叫 uuid。它通過mac位址 時間戳 命名空間 隨機數 偽隨機數來保證生成id的唯一性。u...
Python使用UUID庫生成唯一ID
資料 python官方doc 20.15.uuid uuid objects according to rfc 4122 uuid的演算法介紹 a universally unique identifier uuid urn namespace 概述 uuid 是128位的全域性唯一識別符號,通常由...