Python中UUID生成的原理和用法
![在这里插入图片描述](https://img-blog.csdnimg.cn/6f79609638bd4dbb80bd5f863b62f039.gif#pic_center)
在实际的敲代码过程中,你可能会被要求在请求头或者请求体中加个字段,传个唯一标识,
说到唯一标识,那怎么能少了大名鼎鼎的uuid呢,UUID是通用唯一识别码(Universally Unique Identifier)的缩写,
UUID是基于当前时间、计数器(counter)
和硬件标识(通常为无线网卡的MAC地址)等数据计算生成的,
因为它们是不会被复制的独特标识符
请求头
headers = {
'gateway-appid': appId,
'gateway-rtime': appRtime,
'gateway-sig': appSig,
'gateway-uuid': appUuid,
}
python中uuid有四种,uuid1,uuid3,uuid4,uuid5,至于为啥没有uuid2,我没查到
uuid1:基于时间的UUID通过计算当前时间戳、随机数和机器MAC地址得到,如果能知道当前时间是可以推算出uuid1的,你可以多运行几次,是不是几次的结果很相似
import uuid
aaa = uuid.uuid1()
print(aaa)
uuid4:根据随机数,或者伪随机数生成UUID。这种UUID产生重复的概率是可以计算出来的,但随机的东西就像是买彩票:你指望它发财是不可能的。也基本上是不会重复的
import uuid
bbb = uuid.uuid4()
print(bbb)
uuid3:基于名字的UUID通过计算名字和名字空间的MD5散列值得到。这个版本的UUID保证了:相同名字空间中不同名字生成的UUID的唯一性;不同名字空间中的UUID的唯一性;相同名字空间中相同名字的UUID重复生成是相同的。就是说如果name一致则生成的uuid3是一样的,你可以测试下不管运行多少次都是一样的uuid3
import uuid
name = 'Python'
namespace = uuid.NAMESPACE_URL
ccc = uuid.uuid3(namespace,name)
print(ccc)
uuid5:和基于名字的UUID算法类似,只是散列值计算使用SHA1(Secure Hash Algorithm 1)算法,和uuid3差不多,uuid3用的是MD5算法,uuid5用的是SHA1算法, 如果你name不换,生成的uuid5一直是同一个
import uuid
name = 'Python'
namespace = uuid.NAMESPACE_URL
ddd = uuid.uuid5(namespace,name)
print(ddd)