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

 更新时间:2016年03月02日 11:27:10   作者:mindg  
这篇文章主要介绍了Python随机生成带特殊字符的密码的相关资料,需要的朋友可以参考下

在日常运维中,如果涉及到用户管理,就一定会用到给用户设置密码的工作,其实吧,平时脑子里觉得设置个密码没什么,但要真让你随手敲一个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随机生成带特殊字符的密码就给大家介绍到这里,希望对大家有所帮助!

相关文章

  • Requests什么的通通爬不了的Python超强反爬虫方案!

    Requests什么的通通爬不了的Python超强反爬虫方案!

    今天带大家学习Requests什么的通通爬不了的Python超强反爬虫方案,文中有非常详细的图文介绍及代码示例,对正在学习python的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-05-05
  • Python通过getattr函数获取对象的属性值

    Python通过getattr函数获取对象的属性值

    这篇文章主要介绍了Python通过getattr函数获取对象的属性值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • class类在python中获取金融数据的实例方法

    class类在python中获取金融数据的实例方法

    在本篇文章里小编给大家整理了关于class类怎样在python中获取金融数据的相关内容,有需要的朋友们可以学习下。
    2020-12-12
  • Python中的 Set 与 dict

    Python中的 Set 与 dict

    这篇文章主要介绍了Python中的 Set 与 dict,Set 集合类型有无序 , 自动去重等特点,dict 字典类型 键值对存储的数据,可获取,可修改 表面上有序,实际存储时无序,下面更多详细内容,需要的朋友可以参考一下
    2022-03-03
  • Numpy与Pytorch 矩阵操作方式

    Numpy与Pytorch 矩阵操作方式

    今天小编就为大家分享一篇Numpy与Pytorch 矩阵操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python 字符串中的字符倒转

    Python 字符串中的字符倒转

    实现字符倒转的python函数
    2008-09-09
  • python包管理工具pip全面解析

    python包管理工具pip全面解析

    这篇文章主要为大家介绍了python包管理工具pip的全面解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • pandas 如何保存数据到excel,csv

    pandas 如何保存数据到excel,csv

    这篇文章主要介绍了pandas 如何保存数据到excel,csv的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • django foreignkey外键使用的例子 相当于left join

    django foreignkey外键使用的例子 相当于left join

    今天小编就为大家分享一篇django foreignkey外键使用的例子 相当于left join,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python 实现语音聊天机器人的示例代码

    python 实现语音聊天机器人的示例代码

    这篇文章主要介绍了python 实现语音聊天机器人的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12

最新评论