Python中的secrets模块和SystemRandom()函数提供高级别的随机数生成
发布时间:2023-12-18 23:21:31
Python中的secrets模块和SystemRandom()函数提供了高级别的随机数生成功能,用于生成安全随机数,如密码、令牌、加密密钥等。secrets模块是Python3.6版本新增的模块,它基于底层的os.urandom()函数生成随机字节,提供更简洁的接口。
下面是secrets模块和SystemRandom()函数的使用例子:
1. 使用secrets模块生成随机密码
import secrets
# 生成一个包含指定位数的随机密码
password = secrets.token_hex(8)
print(password)
# 输出示例:198ec6ae
# 生成一个包含指定字符集合的随机密码
password = ''.join(secrets.choice('abcdef123456') for i in range(8))
print(password)
# 输出示例:d6cea26b
# 生成一个包含指定字符集合的随机密码,但是每个字符只能使用一次
password = ''.join(secrets.choice('abcdef123456'.replace(password[i], '', 1)) for i in range(8))
print(password)
# 输出示例:b613ea56
上述代码中,使用secrets模块的token_hex函数生成了一个包含8位随机十六进制数字的密码。还可以使用choice函数从指定字符集合中随机选择字符来生成随机密码,可以设置字符的位数和字符集合。
2. 使用SystemRandom()函数生成随机数
import random
# 使用SystemRandom()生成一个随机整数
random_number = random.SystemRandom().randint(1, 10)
print(random_number)
# 输出示例:7
# 使用SystemRandom()生成一个随机浮点数
random_float = random.SystemRandom().uniform(1, 10)
print(random_float)
# 输出示例:5.689429
# 使用SystemRandom()生成一个随机bool值
random_bool = random.SystemRandom().choice([True, False])
print(random_bool)
# 输出示例:True
# 使用SystemRandom()生成一个随机密码
password = ''.join(random.SystemRandom().choice('abcdef123456') for i in range(8))
print(password)
# 输出示例:31da53a8
上述代码中,使用SystemRandom()函数生成了一个随机整数、随机浮点数、随机bool值和随机密码。可以使用SystemRandom()函数的randint函数生成指定范围内的随机整数,uniform函数生成指定范围内的随机浮点数,choice函数从指定列表中随机选择元素。
总结:
secrets模块和SystemRandom()函数提供了python中高级别的随机数生成功能。secrets模块封装了生成安全随机数的函数,使用简便;SystemRandom()函数使用系统提供的最高品质的随机数生成器,生成更安全的随机数。在开发中,如果需要生成安全随机数,可以使用secrets模块和SystemRandom()函数来实现。
