python[生成随即的密码]
2016-12-29 13:47
316 查看
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[glob+rmtree来删除目录和子目录及其下所有文件]
- Python批量对目录下文件重命名
- python 2.7 : 错误处理、调试
- python实例手册
- python 实现递归删除文件和文件夹
- python之基础篇(五)——数据类型
- numpy的 Broadcasting
- pycharm把.py文件识别成.text文件
- Python 错误:IndentationError: expected an indented block
- Python3:好玩游戏的物品清单 和 列表到字典的函数
- 理解Python闭包与延迟绑定
- tornado 入门
- Python编程的中文问题
- caffe+python+mnist从图片训练到测试单张图片
- caffe+python+mnist从图片训练到测试单张图片
- python学习笔记(三)
- Python3 基础:模块
- 操作系统课程设计-线程和进程的同步与互斥
- python2与python3区别汇总
- Cassandra3.9版本基础入门3-插入和查询