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中chr、unichr、ord字符函数之间的对比
Jun 16 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
Python登录注册验证功能实现
Jun 18 Python
Django 日志配置按日期滚动的方法
Jan 31 Python
python基于SMTP协议发送邮件
May 31 Python
python爬虫之自制英汉字典
Jun 24 Python
python中pygame安装过程(超级详细)
Aug 04 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
Jan 08 Python
Python基于numpy模块实现回归预测
May 14 Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 Python
Python列表的索引与切片
Apr 07 Python
人工智能深度学习OpenAI baselines的使用方法
May 20 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面向对象概念
2011/11/06 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
php实现mysql数据库连接操作及用户管理
2015/11/08 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
Python help()函数用法详解
2014/03/11 Python
Python中的作用域规则详解
2015/01/30 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
基于python实现对文件进行切分行
2020/04/26 Python
Python 实现集合Set的示例
2020/12/21 Python
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
历史系毕业生自荐信
2013/10/28 职场文书
毕业生自我鉴定
2013/12/04 职场文书
财务管理专业自荐信范文
2013/12/24 职场文书
新闻传播专业求职信
2014/07/22 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
Python绘画好看的星空图
2022/03/17 Python