python实例31[生成随即的密码]

 

代码:

复制代码

import random
import string
import time

# strong.high = 3  #random for the whole passwd
#storng.middle = 2  # include one special sign
#strong.ow = 1  # just include characters or digits

def mkpassByRandom(size=8, strong = 2):
    chars = []
    chars.extend([i for i in string.ascii_letters])
    chars.extend([i for i in string.digits])
    chars.extend([i for i in '\'"!@#$%&*()-_=+[{}]~^,<.>;:/?'])
    
    passwd = ''
    strong = int(strong)
    
    if (strong <= 1) :
     for i in range(size):
       passwd += chars[random.randint(0,len(string.ascii_letters + string.digits) - 1)]
       random.seed = int(time.time())
    elif(strong == 2):
       newpasswd = ''
       for i in range(size - 1):
         newpasswd +=chars[random.randint(0,len(string.ascii_letters + string.digits) - 1)]
         random.seed = int(time.time())
       newpasswd += chars[random.randint(len(string.ascii_letters + string.digits) , len(chars) - 1)]
       ll = [ch for ch in newpasswd]
       random.shuffle(ll)
       for l in ll:
         passwd += l
    elif(strong >=3):
      for i in range(size):
        passwd += chars[random.randint(0,  len(chars) - 1)]
        random.seed = int(time.time())
        random.shuffle(chars)
    else:
      pass
     
    return passwd
  
def rule1(ch):
    rulesdict = { 'o': 0, 'i':'!', 'b':8, 'p':'P', 'm':'M'}
    newch = ch
    
    if ch in rulesdict.keys():
      newch = rulesdict[ch]
    return newch

def rule2(ch):
  if(ch.isupper()):
    return ch.lower()
  elif(ch.islower()):
    return ch.upper()
  return ch

def mkpassByRules(passwd, *rules ):
  if (passwd == "" or len(rules) == 0):
    return passwd
  
  newpasswd = ""
  for c in passwd:
    r = random.randint(0, len(rules) - 1)
    ch = (rules[r])(c)
    newpasswd += str(ch)

  return newpasswd


def mkpass(size = 8, strong = 2, initpasswd = ""):
  if ( not initpasswd == ""):
    return mkpassByRules(initpasswd, rule1, rule2)
  else:
    return mkpassByRandom(size,strong)

print( mkpass(initpasswd = "Password123"))
print( mkpass(strong = 1))
print( mkpass(strong = 2))
print( mkpass(strong = 3))


 
复制代码

 

 

 

参考:http://code.activestate.com/recipes/577339-random-passwords/

 

转载于:https://www.cnblogs.com/L-H-R-X-hehe/p/3815357.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值