使用Python生成用于管理机密的安全随机数

为了通过密码生成安全的随机数,我们可以在python中使用secrets模块。此模块有助于创建安全密码,帐户身份验证,安全令牌或某些相关机密。

要使用secrets模块的类和模块,我们应该将该模块导入我们的代码中。

import secrets

随机数

秘密模块用于随机访问一些安全的来源。这是由操作系统提供的。

与秘密模块的随机数有关的类和函数是-

类的秘密.SystemRandom

这是一类通过使用一些最高质量的源生成随机数的类。这些源由操作系统提供。

方法secrets.choice(sequence)

此方法用于从非空序列中随机选择一个元素。

方法secrets.randbelow(n)

此方法用于从0到n(不包括)范围内选择一个整数值。

方法secrets.randbits(k)

此方法用于返回具有k个随机位的整数。

生成令牌

秘密模块还可以产生一些安全令牌。这些类型的令牌可用于生成密码重置,复杂的URL等。

与令牌生成有关的一些方法是-

方法secrets.token_bytes([nbytes = None])

此方法返回nbytes的随机字节字符串以生成安全令牌。如果未提供nbytes值,则使用指定的默认值。

方法secrets.token_hex([nbytes = None])

此方法以十六进制形式返回随机文本字符串。返回的字符串具有nbytes个随机字节。每个字符可以转换为两个十六进制数字。如果未提供nbytes值,则使用指定的默认值。

方法secrets.token_urlsafe([nbytes = None])

此方法用于返回随机的URL安全文本字符串。文本基本上是Base64编码的。平均每个字节产生1.3个字符(大约)。

范例程式码

import secrets
my_sequence = ['K','?','D',':','o','5','t','l','Y','0']
rand_pass = ''
for i in range(15):
   rand_char = secrets.choice(my_sequence)
   rand_pass += rand_char
print("Random Password is: " + rand_pass)
my_tok1 = secrets.token_hex(10) #Create HEX token of length 10 
my_tok2 = secrets.token_hex(5) #Create HEX token of length 5
print("First Token: " + my_tok1)
print("First Token: " + my_tok2)

输出结果

Random Password is: YK0l:YD??lKKY?o
First Token: f3e68646dcf1082e1038
First Token: e4ae3c2384