欢迎访问宙启技术站
智能推送

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()函数来实现。