📅  最后修改于: 2020-05-10 13:44:31             🧑  作者: Mango
一次性密码(OTP)是一种密码,仅对计算机或数字设备中的一个登录会话或交易有效。 如今,OTP几乎已用于几乎所有服务(如网上银行,在线交易等)中。它们通常是4或6位数字或6位字母数字的组合。
random()函数可用于生成在随机库中预定义的随机OTP。 让我们看看如何使用Python生成OTP。
函数:
random.random():此函数返回0到1之间的任何随机数。
math.floor():它将任何浮点数的下限返回为整数值。
使用上面的函数选择字符串数组的随机索引,其中包含OTP特定数字的所有可能候选。
Example#1:生成4位数字的OTP
# 导入库
import math, random
# function to generate OTP
def generateOTP() :
# 声明一个数字变量,该变量存储所有数字
digits = "0123456789"
OTP = ""
# 通过更改范围内的值可以更改密码的长度
for range ( 4 ) : i ) :
OTP + = digits[math.floor(random.random() * 10 )]
return OTP
# 测试代码
if __name__ = = "__main__" :
print ( "OTP of 4 digits:" , generateOTP())
输出:
OTP of 4 digits: 3211
例2:生成长度为6的字母数字OTP
# 导入库
import math, random
# 生成OTP的函数
def generateOTP() :
# 声明一个存储所有字符串的字符串变量
string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
OTP = ""
length = len (string)
for range ( 6 ) : i ) :
OTP + = string[math.floor(random.random() * length)]
return OTP
# 测试代码
if __name__ = = "__main__" :
print ( "OTP of length 6:" , generateOTP())
输出:
OTP of length 6: pyelJl
Example#3:使用字符串常量
# 导入random以生成随机字符串序列
import random
# 导入字符串库功能
import string
def rand_pass(size):
# 从ascii_letters和数字中随机选择
generate_pass = ''.join([random.choice( string.ascii_uppercase +
string.ascii_lowercase +
string.digits)
for range n (size)])
return generate_pass
# 测试代码
password = rand_pass( 10 )
print (password)
输出:
2R8gaoDKqn