前言
在现代软件开发中,唯一标识符(UUID)和机密信息的处理是至关重要的。UUID是用于唯一标识数据记录和对象的128位值,确保了全球范围内的唯一性。同时,Python的secrets模块为处理机密信息提供了强大的随机数生成功能,适用于密码、身份验证和安全令牌等敏感数据的生成。在本文中,我们将深入探讨UUID的不同类型以及secrets模块的常用函数,以便更好地理解它们的用途和实际应用。
个人主页:尘觉主页
个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力
在csdn获奖荣誉: csdn城市之星2名
Java全栈群星计划top前5
端午大礼包获得者
阿里云专家博主
亚马逊DyamoDB结营
欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦
UUID是Universally Unique IDentifier(普遍唯一的标识)
UUID代表通用唯一标识符,是一个128位的值,用于软件开发的唯一标识
UUID的生成基于当前时间戳和生成UUID的工作站的唯一属性
uuid1
uuid.uuid1([node[,clock_seq]]):基于时间戳
"""
使用主机ID,序列号和当前时间来生成UUID,可保证全球范围的唯一性,但由于该方法生成的UUID中包含有主机的网络地址,可能危及隐私
如果node参数缺省,系统则自动调用getnode()函数获取主机的硬件地址
如果clock_seq缺省,则随机产生14位序列号代替
"""
uuid4
uuid.uuid4():基于随机数
'''
通过随机数来生成uuid,但使用的是伪随机数有一定的重复概率
'''
uuid3
uuid.uuid3(namespace,name):基于名字的MD5散列值
'''
通过计算命名空间和名字的MD5散列值来生成uuid,可以保证同一命名空间中不同名字的唯一性和不同命名空间的唯一性
'''
uuid.uuid3(uuid.NAMESPACE_DNS,'456')
uuid5
uuid.uuid3(namespace,name):基于名字的SHA-1散列值
'''
通过计算命名空间和名字的SHA-1散列值生成uuid,算法与uuid3相同
'''
uuid.uuid5(uuid.NAMESPACE_DNS,'456')
secrets是python3.6加入到标准库的,使用secrets模块,可以生成适用于处理机密信息(如密码,帐户身份验证,安全令牌)的
加密
强随机数。
常用函数 | 说明 | 实例 |
---|---|---|
choice(sequence) | 从非空序列中选择一个元素 | secrets.choice([23,3,5,6]) |
randbelow(n) | 随机一个取[0,n)的整数 | secrets.randbelow(10) |
randbits(n) | 在n位长度二进制数范围内随机取一位 | secrets.randbits(10) |
token_bytes(n) | 随机生成n个字节以内的bytes类型字符串 | secrets.token_bytes(2) |
token_hex(n) | 返回n位长16进制随机文本字符串 | secrets.token_hex(2) |
taken_urlsafa(n) | 返回字节为nbytes的URL安全文本字符串。 文本以Base64编码,每个字节平均约为1.3个字符。 | secrets.token_urlsafe() |
compare_digest(str,str) | 字符串比较,相等返回True | secrets.compare_digest(‘a’,‘a’) |
通过本文,我们详细了解了UUID的不同分类,包括基于时间戳、随机数、MD5散列值和SHA-1散列值的生成方法。这些方法各自适用于不同的情景,确保了唯一性和隐私安全。此外,我们还介绍了Python的secrets模块,它为处理机密信息提供了强随机数生成的功能,可用于密码、身份验证和令牌等敏感数据的生成。使用这些工具,开发人员可以更好地确保数据的安全性和唯一性,从而提高应用程序的安全性和可靠性。
热门专栏推荐
想学习vue的可以看看这个
java基础合集
数据库合集
redis合集
nginx合集
linux合集
手写机制
微服务组件
spring_尘觉
springMVC
mybits
等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持
欢迎大家加入我的社区 尘觉社区
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力