Python随机生成带特殊字符的密码


Posted in Python onMarch 02, 2016

在日常运维中,如果涉及到用户管理,就一定会用到给用户设置密码的工作,其实吧,平时脑子里觉得设置个密码没什么,但要真让你随手敲一个12位带特殊字符的随机密码,也是很痛苦的事,如果让你敲10个这样的随机密码,我估计要人要疯了,所以这事不适合人干,但机器最做这个最拿手,今天我们就来学习一段python脚本,可以直接生成自己需要的密码,且密码长度,数字,字符个数随意你指定,废话不多说了,我们直接看代码:

#!/usr/bin/env python
import string
from itertools import chain
from random import choice, sample
def mkpasswd(length=12, digits=4, upper=3, lower=3):
lowercase = string.lowercase
uppercase = string.uppercase
salt = '!@#$%^&*()><?'
password = list(
chain(
(choice(uppercase) for _ in range(upper)),
(choice(lowercase) for _ in range(lower)),
(choice(string.digits) for _ in range(digits)),
(choice(salt) for _ in range((length - digits - upper - lower)))
)
)
return "".join(sample(password, len(password)))
if __name__ == '__main__':
print mkpasswd()
#!/usr/bin/env python
import string
from itertools import chain
from random import choice, sample
def mkpasswd(length=12, digits=4, upper=3, lower=3):
lowercase = string.lowercase
uppercase = string.uppercase
salt = '!@#$%^&*()><?'
password = list(
chain(
(choice(uppercase) for _ in range(upper)),
(choice(lowercase) for _ in range(lower)),
(choice(string.digits) for _ in range(digits)),
(choice(salt) for _ in range((length - digits - upper - lower)))
)
)
return "".join(sample(password, len(password)))
if __name__ == '__main__':
print mkpasswd()

脚本逐行解释,最开始几行导入了需要的模块,接下来定义一个mkpasswd的函数,函数的参数可以设置密码长度,数字、大写和小写字符的个数,接下来是函数主题部分:

利用string模块的属性生成大小写字符串,salt是特殊字符集(支持自己添加),我们重点说password的生成,它首先是一个列表,因为调用了list()工厂函数,chain()函数的功能是将一组迭代器对象连接起来,chain()里有三个生成器表达式,每个表达式调用for循环,然后随机选择指定个数的字符,可能大家有看到for循环中有一个_(下划线),这个下划线有什么作用呢?我就不卖关子了,其实它啥作用也没有,我自己理解为用不到的变量,这种写法大家以后也可以用,比如你在循环的时候用不到这个变量,就可用用_(下划线)来表示。

函数最后是return连接后的字符串,sample()函数是从随机样本中取出自己指定的样本个数,需要两个参数,一个是样本,一个是取多少,取的过程是随机的,其实在这个脚本中这个函数没有发挥它完全的功能,因为生成的password就是12位的,然后在取出12位,不存在从大样本中取出小样本的工作,但起到了随机的功能,所以生成的密码是字符都是随机的。

关于Python随机生成带特殊字符的密码就给大家介绍到这里,希望对大家有所帮助!

Python 相关文章推荐
python进程管理工具supervisor使用实例
Sep 17 Python
python3生成随机数实例
Oct 20 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
Python实用工具FuckIt.py介绍
Jul 02 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
Nov 28 Python
Python 实现训练集、测试集随机划分
Jan 08 Python
python实现信号时域统计特征提取代码
Feb 26 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
Apr 16 Python
python 实现两个线程交替执行
May 02 Python
Python中的全局变量如何理解
Jun 04 Python
Python中的流程控制详解
Feb 18 Python
Python设计模式编程中Adapter适配器模式的使用实例
Mar 02 #Python
Python打造出适合自己的定制化Eclipse IDE
Mar 02 #Python
设计模式中的原型模式在Python程序中的应用示例
Mar 02 #Python
深入解析Python设计模式编程中建造者模式的使用
Mar 02 #Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 #Python
实例讲解Python设计模式编程之工厂方法模式的使用
Mar 02 #Python
详解设计模式中的工厂方法模式在Python程序中的运用
Mar 02 #Python
You might like
删除无限级目录与文件代码共享
2006/07/12 PHP
项目中应用Redis+Php的场景
2016/05/22 PHP
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
JavaScript Split()方法
2015/12/18 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
详解AngularJS验证、过滤器、指令
2017/01/04 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
[00:11]战神迅矛
2019/03/06 DOTA
PHP webshell检查工具 python实现代码
2009/09/15 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
python获取url的返回信息方法
2018/12/17 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
python中Django文件上传方法详解
2020/08/05 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
Html5新标签解释及用法
2012/02/17 HTML / CSS
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
高中班级口号
2014/06/09 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
goland设置颜色和字体的操作
2021/05/05 Golang