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 Python2 升级到Python3的简单实现
Jun 21 Python
教你用Python脚本快速为iOS10生成图标和截屏
Sep 22 Python
Python实现一个转存纯真IP数据库的脚本分享
May 21 Python
python实现基于SVM手写数字识别功能
May 27 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
selenium+python截图不成功的解决方法
Jan 30 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
python使用参数对嵌套字典进行取值的方法
Apr 26 Python
python set内置函数的具体使用
Jul 02 Python
Django url,从一个页面调到另个页面的方法
Aug 21 Python
PyCharm下载和安装详细步骤
Dec 17 Python
Python基于Webhook实现github自动化部署
Nov 28 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生成html分页列表的代码
2007/03/18 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
jquery的颜色选择插件实例代码
2008/10/02 Javascript
JavaScript XML操作 封装类
2009/07/01 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
pyhton列表转换为数组的实例
2018/04/04 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
python 创建一维的0向量实例
2019/12/02 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
工程项目建议书范文
2014/03/12 职场文书
大学生心理活动总结
2014/07/04 职场文书
现役军人家属慰问信
2015/03/24 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
分析设计模式之模板方法Java实现
2021/06/23 Java/Android
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js