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 相关文章推荐
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
Jun 07 Python
简单了解Django模板的使用
Dec 20 Python
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
Python 中的range(),以及列表切片方法
Jul 02 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 Python
pyhanlp安装介绍和简单应用
Feb 22 Python
Python3实现从排序数组中删除重复项算法分析
Apr 03 Python
Python 实现数据结构-循环队列的操作方法
Jul 17 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
Python异常模块traceback用法实例分析
Oct 22 Python
浅析Python3 pip换源问题
Jan 06 Python
Jmeter调用Python脚本实现参数互相传递的实现
Jan 22 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
使用PHP批量生成随机用户名
2008/07/10 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
Python 字符串操作方法大全
2014/03/11 Python
Python Requests安装与简单运用
2016/04/07 Python
详细介绍Python的鸭子类型
2016/09/12 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
Python matplotlib画曲线例题解析
2020/02/07 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
苹果台湾官网:Apple台湾
2019/01/05 全球购物
经理管理专业自荐信范文
2013/12/31 职场文书
宿舍保安职务说明书
2014/02/25 职场文书
给孩子的新年寄语
2014/04/08 职场文书
财务管理专业求职信
2014/06/11 职场文书
如何在Python中妥善使用进度条详解
2022/04/05 Python