Python随机生成带特殊字符的密码

作者:mindg 时间:2021-10-07 02:48:05 

在日常运维中,如果涉及到用户管理,就一定会用到给用户设置密码的工作,其实吧,平时脑子里觉得设置个密码没什么,但要真让你随手敲一个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,特殊,字符,密码
0
投稿

猜你喜欢

  • asp三天学好ADO对象之第一天

    2008-10-09 12:46:00
  • JavaScript观察者模式(publish/subscribe)原理与实现方法

    2024-04-10 10:44:15
  • Python学习之用pygal画世界地图实例

    2021-03-22 13:04:47
  • python排序方法实例分析

    2023-04-07 12:52:05
  • MySQL配置文件my.ini的使用解读

    2024-01-15 09:40:26
  • Python统计学一数据的概括性度量详解

    2022-08-16 03:18:20
  • python中数据爬虫requests库使用方法详解

    2022-04-01 05:47:11
  • Python做屏幕录制工具的实现示例

    2021-06-17 09:29:23
  • python二叉树遍历的实现方法

    2021-09-19 03:53:14
  • python下MySQLdb用法实例分析

    2024-01-18 11:50:27
  • 人民币的符号的正确表示法?一杠?两杠?¥还是¥呢?

    2010-03-24 12:21:00
  • python实现通过队列完成进程间的多任务功能示例

    2022-06-25 03:49:27
  • python机器学习基础K近邻算法详解KNN

    2024-01-01 05:44:57
  • Python实现为图像添加下雪特效

    2021-07-10 11:28:45
  • 详解ABP框架中Session功能的使用方法

    2024-05-13 09:16:28
  • javascript实现鼠标选取拖动或Ctrl选取拖动

    2021-08-21 19:08:33
  • 浅谈哪个Python库才最适合做数据可视化

    2022-12-05 00:34:58
  • php在线打包程序源码

    2024-05-11 09:48:47
  • Python实现可自定义大小的截屏功能

    2022-06-27 15:13:55
  • Python高阶函数、常用内置函数用法实例分析

    2023-01-24 17:36:58
  • asp之家 网络编程 m.aspxhome.com