python生成UUID

UUID(全称为Universally Unique IDentifier)是128位的全局唯一标识符,通常由32字节的字符串表示。有时也称guid(global unique identifier)。python中自带了uuid模块来进行uuid的生成和管理工作。
UUID主要有五个算法,也就是五种方法来实现:

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

uuid.uuid2() 算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。不过需要注意的是python中没有基于DCE的算法,所以python的uuid模块中没有uuid2这个方法。

uuid.uuid3(namespace,name)  通过计算一个命名空间和名字的md5散列值来给出一个uuid,所以可以保证命名空间中的不同名字具有不同的uuid,但是相同的名字就是相同的uuid了。namespace并不是一个自己手动指定的字符串或其他量,而是在uuid模块中本身给出的一些值。比如uuid.NAMESPACE_DNS,uuid.NAMESPACE_OID,uuid.NAMESPACE_OID这些值。这些值本身也是UUID对象,根据一定的规则计算得出。

uuid4() 由伪随机数得到,有一定的重复概率。

uuid.uuid5(namespace,name) 和uuid3基本相同,只不过采用的散列算法是sha1

一般情况下,uuid1方法就已经够用了,使用方法: 

import uuid
 
name = 'abc'
namespace = 'xyz'
 
print(uuid.uuid1())
print(uuid.uuid3(uuid.NAMESPACE_DNS,name))
print(uuid.uuid3(uuid.NAMESPACE_DNS,namespace))
print(uuid.uuid4())
print(uuid.uuid5(uuid.NAMESPACE_URL, name))
print(uuid.uuid5(uuid.NAMESPACE_URL, namespace))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值