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 Django连接MySQL数据库做增删改查
Nov 07 Python
python字符串排序方法
Aug 29 Python
Python实现批量检测HTTP服务的状态
Oct 27 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 Python
取numpy数组的某几行某几列方法
Apr 03 Python
Flask框架web开发之零基础入门
Dec 10 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
对python 树状嵌套结构的实现思路详解
Aug 09 Python
python打印n位数“水仙花数”(实例代码)
Dec 25 Python
Python通过Tesseract库实现文字识别
Mar 05 Python
使用python自动追踪你的快递(物流推送邮箱)
Mar 17 Python
Python 实现自动登录+点击+滑动验证功能
Jun 10 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+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
window.event快达到全浏览器支持了,以后使用就方便了
2011/11/30 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
[37:21]完美世界DOTA2联赛PWL S2 Inki vs Magma 第二场 11.22
2020/11/24 DOTA
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
几款好用的python工具库(小结)
2020/10/20 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
就业自荐信
2013/12/04 职场文书
村优秀党员事迹材料
2014/01/15 职场文书
大学生励志演讲稿
2014/04/25 职场文书
体育之星事迹材料
2014/05/11 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
八项规定对照检查材料
2014/08/31 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python