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正则表达式教程之三:贪婪/非贪婪特性
Mar 02 Python
关于Python 3中print函数的换行详解
Aug 08 Python
python中文件变化监控示例(watchdog)
Oct 16 Python
Django进阶之CSRF的解决
Aug 01 Python
浅谈Python中eval的强大与危害
Mar 13 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
python实现图书馆抢座(自动预约)功能的示例代码
Sep 29 Python
selenium自动化测试入门实战
Dec 21 Python
python线程优先级队列知识点总结
Feb 28 Python
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
Apr 13 Python
使用Python拟合函数曲线
Apr 14 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新手上路(三)
2006/10/09 PHP
ASP和PHP都是可以删除自身的
2007/04/09 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
原生js实现放大镜
2017/02/20 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
JS数组操作之增删改查的简单实现
2017/08/21 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
PyQt5实现拖放功能
2018/04/25 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
2019年Java面试必问之经典试题
2012/09/12 面试题
聘任书模板
2014/03/29 职场文书
社会公德演讲稿
2014/05/20 职场文书
关于运动会的广播稿(10篇)
2014/09/12 职场文书
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
童年读书笔记
2015/06/26 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
JavaScript实例 ODO List分析
2022/01/22 Javascript
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers
git stash(储藏)的用法总结
2022/06/25 Servers