📜  Python | 生成一次性密码(OTP)的程序

📅  最后修改于: 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