代码:


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/

python实例31[生成随即的密码]的更多相关文章

  1. Python实例31[批量对目录下文件重命名]

    经常会遇到下载的文件或电子书,名字中间都包含了一些网址信息,实际使用中由于名字太长不方便,下面的脚本使用正则表达式来对目录下的所有文件重命名:例如: 修改前:[大家网]Mac OS X for Uni ...

  2. python实例31[列出目录下所有的文件到txt]

    代码: (使用os.listdir) import os def ListFilesToTxt(dir,file,wildcard,recursion):     exts = wildcard.sp ...

  3. (转)Python实例手册

    原文地址:http://hi.baidu.com/quanzhou722/item/cf4471f8e23d3149932af2a7 实在是太好的资料了,不得不转 python实例手册 #encodi ...

  4. 转载 python实例手册

    python实例手册 #encoding:utf8# 设定编码-支持中文 0说明 手册制作: 雪松 更新日期: 2013-12-19 欢迎系统运维加入Q群: 198173206 # 加群请回答问题 请 ...

  5. 【转载】python实例手册

    今天写爬虫的时候遇到了问题,在网上不停地查找资料,居然碰到两篇好文章: 1.python实例手册   作者:没头脑的土豆 另一篇在这:shell实例手册 python实例手册 #encoding:ut ...

  6. Python实例手册

    在电脑中突然发现一个这么好的资料,雪松大神制作,不敢独享,特与大家共享.连他的广告也一并复制了吧! python实例手册 #encoding:utf8 # 设定编码-支持中文 0说明 手册制作: 雪松 ...

  7. wordpress密码生成与登录密码验证

    一.研究wordpress时wordpess的密码密码生成与登录密码验证方式很重要 WordPress密码已成为整合的首要目标,如何征服整合,就得了解WordPress密码算法. WordPress系 ...

  8. 奇异值分解原理及Python实例

    奇异值分解 SVD(Singular Value Decomposition)是一种重要的矩阵分解方法,可以看做是特征分解在任意矩阵上的推广,SVD是在机器学习领域广泛应用的算法. 特征值和特征向量 ...

  9. python实例:解决经典扑克牌游戏 -- 四张牌凑24点 (二)

    Hey! 如果你还没有看这篇的上文的话,可以去稍稍瞅一眼,会帮助加速理解这一篇里面涉及到的递归结构哦!(上一篇点这里:<python实例:解决经典扑克牌游戏 -- 四张牌凑24点 (一)> ...

随机推荐

  1. C++统计程序运行时间代码片段

    因为经常需要统计代码的运行时间,所以计时功能就显得很重要, 记录一下现在喜欢用的计时方式,供日后查阅. 1.下面是计时主函数, bool TimeStaticMine(int id,const cha ...

  2. C#代码获取另一程序的错误提示,并关闭窗口。

    A程序报错弹框如下: B程序捕捉到此错误消息,并关闭.B程序核心代码如下. private void timer_Click(object sender, EventArgs e) { //查找Mes ...

  3. 贪心+dp

    贪心+dp 好多题都是这个思想, 可以说是非常重要了 思想一: 在不确定序列无法dp的情况下, 我们不妨先假设序列已经选定, 而利用贪心使序列达到最优解, 从而先进行贪心排序, 在进行dp选出序列 思 ...

  4. k8s--kubernetes存储之Volume

    Volume 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题.首先,当容器崩溃时, kubelet会重启它,但是容器中的文件将丢失--容器以干净的状态(镜像最初的状态 ...

  5. Spring MVC 中使用AOP 进行事务管理--注解实现

    注解实现实现事务管理很简单,和配置式差不多,配置文件的头文件也要加相应的支持.配置数据源,并开启事务管理支持即可. <bean id="transactionManager" ...

  6. [转帖]vCenter 计划任务.

    vSphere5.0实用小技巧-DPM计划任务 2013年05月12日 23:00:09 weixin_34185320 阅读数:9 https://blog.csdn.net/weixin_3418 ...

  7. jira:恢复数据:AO_187CCC_SIDEBAR_LINK

    JIRA 恢复数据时报错 ,关键词是找不到 AO_187CCC_SIDEBAR_LINK. 经网上查为 mysql connect jar 包 的版本过高所致. 降低版本后,成功导入数据.

  8. 小记-----一些linux操作小操作

    lrzsz工具 window系统与linux系统 文件互传      1.在linux系统命令行:sudo yum install lrzsz  或者  yum install lrzsz (输入一个 ...

  9. [BZOJ2964]Boss单挑战

    题目描述 某\(RPG\)游戏中,最后一战是主角单挑\(Boss\),将其简化后如下: 主角的气血值上限为\(HP\),魔法值上限为\(MP\),愤怒值上限为\(SP\):\(Boss\)仅有气血值, ...

  10. kafka工作原理

    https://blog.csdn.net/qq_29186199/article/details/80827085 https://www.jianshu.com/p/4bf007885116 ht ...