使用Python生成随机密码的示例分享
作者:goldensun 发布时间:2023-05-23 11:32:10
标签:Python,随机密码
生成随机密码这件事情用python来干确实相当的方便,优美的string方法加上choice简直是绝配
make_password.py
###简单几行代码执行即可生成记不住的字符串###
$ python make_passwd.py
DLrw9EiT
Qs4Wm84q
RQwl4L2L
u9g0LgwW
jHPtYdyU
...
$ python make_passwd.py
DLrw9EiT
Qs4Wm84q
RQwl4L2L
u9g0LgwW
jHPtYdyU
...
代码如下——注释比代码长
#!/usr/bin/python
#--coding:utf-8--#
#-------------------------------------------------------------------------------
# Name: make_passwd
#
# Author: LiuSha
#
# Created: 28/12/2014
# Copyright: (c) WDZJ-SA 2014
#-------------------------------------------------------------------------------
from random import choice
import string
def Makepass(length=8, chars=string.letters+string.digits):
return ''.join([choice(chars) for i in range(length)])
if __name__ == '__main__':
for i in range(10):
print Makepass()
##下例基本上就是这个小脚本的所有工作核心了,使用random模块的choice方法取string模块生成的字符串##
>>> string.letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
'0123456789'
>>> choice(string.digits)
'4'
>>> choice(string.letters)
'T'
##有关生成器可参考:http://www.ipython.me/python/python-generator.html##
#!/usr/bin/python
#--coding:utf-8--#
#-------------------------------------------------------------------------------
# Name: make_passwd
#
# Author: LiuSha
#
# Created: 28/12/2014
# Copyright: (c) WDZJ-SA 2014
#-------------------------------------------------------------------------------
from random import choice
import string
def Makepass(length=8, chars=string.letters+string.digits):
return ''.join([choice(chars) for i in range(length)])
if __name__ == '__main__':
for i in range(10):
print Makepass()
##下例基本上就是这个小脚本的所有工作核心了,使用random模块的choice方法取string模块生成的字符串##
>>> string.letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
'0123456789'
>>> choice(string.digits)
'4'
>>> choice(string.letters)
'T'
##有关生成器可参考:http://www.ipython.me/python/python-generator.html##
生成一些人似乎能好记一些的密码(Qs4Wm84q这种密码似乎除了复制粘贴没有别的选择,话说前年我使用shell生成的类似的密码给ldap做默认密码,我当时公司就真有员工把这样的密码背下来了,现在想想真心是厉害~~~)。
##这样看起来是比上面的好记一点了吧,但需要提供一个字典文件##
$ python make_dictpass.py 1 8 1
ipythosd
$ python make_dictpass.py
nahontchen
chenyibfeo
ipythoniue
coreostche
...
$ python make_dictpass.py 1 8 1
ipythosd
$ python make_dictpass.py
nahontchen
chenyibfeo
ipythoniue
coreostche
...
代码如下
#!/usr/bin/python
#--coding:utf-8--#
#-------------------------------------------------------------------------------
# Name: make_dictpass
#
# Author: LiuSha
#
# Created: 28/12/2014
# Copyright: (c) WDZJ-SA 2014
#-------------------------------------------------------------------------------
import random
import string
class passwd():
data = open('./word.txt').read().lower()
def renew(self, n, maxmem=3):
self.chars = []
for i in range(n):
randspot = random.randrange(len(self.data))
self.data = self.data[randspot:] + self.data[:randspot]
where = -1
locate = ''.join(self.chars[-maxmem:])
while where < 0 and locate: where = self.data.find(locate) locate = locate[1:] c = self.data[where+len(locate)+1] if not c.islower(): c = random.choice(string.lowercase) self.chars.append(c) def __str__(self): return ''.join(self.chars) if __name__ == '__main__': import sys ##如果带参数的话可以定义生成密码的次数,长度,追溯记录## if len(sys.argv) > 1:
dopass = int(sys.argv[1])
else:
dopass = 8
if len(sys.argv) > 2:
length = int(sys.argv[2])
else:
length = 10
if len(sys.argv) > 3:
memory = int(sys.argv[3])
else:
memory = 3
onepass = passwd()
for i in range(dopass):
onepass.renew(length,memory)
print onepass
##字典文件(可以是各种单词的组合)##
$ cat word.txt
chenyi
itchenyi
python
ipython
coreos
coreos.me
ipython.me
#!/usr/bin/python
#--coding:utf-8--#
#-------------------------------------------------------------------------------
# Name: make_dictpass
#
# Author: LiuSha
#
# Created: 28/12/2014
# Copyright: (c) WDZJ-SA 2014
#-------------------------------------------------------------------------------
import random
import string
class passwd():
data = open('./word.txt').read().lower()
def renew(self, n, maxmem=3):
self.chars = []
for i in range(n):
randspot = random.randrange(len(self.data))
self.data = self.data[randspot:] + self.data[:randspot]
where = -1
locate = ''.join(self.chars[-maxmem:])
while where < 0 and locate: where = self.data.find(locate) locate = locate[1:] c = self.data[where+len(locate)+1] if not c.islower(): c = random.choice(string.lowercase) self.chars.append(c) def __str__(self): return ''.join(self.chars) if __name__ == '__main__': import sys ##如果带参数的话可以定义生成密码的次数,长度,追溯记录## if len(sys.argv) > 1:
dopass = int(sys.argv[1])
else:
dopass = 8
if len(sys.argv) > 2:
length = int(sys.argv[2])
else:
length = 10
if len(sys.argv) > 3:
memory = int(sys.argv[3])
else:
memory = 3
onepass = passwd()
for i in range(dopass):
onepass.renew(length,memory)
print onepass
##字典文件(可以是各种单词的组合)## $ cat word.txt chenyi itchenyi python ipython coreos coreos.me ipython.me
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 基本功能:能够实现学生成绩相关信息的输入、输出、查找、删除、修改等功能;(使用数据库对数据进行存取)输入并存储学生的信息:通过输入学生的学号
- 写任何编程代码,不同的开发者都会有不同的见解。但参考一下总是好的,下面是来自 Javascript Toolbox 发布的 14条最佳JS代
- 备注:Ken Henderson 从开发者的角度来阐述了SQL SERVER 2000内存管理的内部机制简介在本专栏中,我们将从一个开发者的
- 一个网站程序,在添加新闻时出现错误以下是错误提示: Microsoft OLE DB Provide
- 如下所示:' '.join(line.split())例如:'line dd',运行line.split()
- 想学习Python的同学们,在这里隆重介绍一款 Python 的开发工具 pyCharm IDE。这是我最喜欢的 Python编辑器利器。而
- 前端开发部门在壮大,人员在增加,技术在进步。CSSer虽然不能代表前端开发团队,但CSSer是前端开发中非常重要的组成部分。一、文档写程序的
- 如题,先上效果图:主要分为两大步骤使用python语句,通过百度地图API,对已知的地名抓取经纬度使用百度地图API官网的html例程,修改
- 这里为大家推荐一些不错的学习python基础的网站Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的
- 这篇文章主要介绍了Python @property原理解析和用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- Python 在命令行解析方面给出了类似的几个选择:自己解析, 自给自足(batteries-included)的方式,以及大量的
- 一、题目内容给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的
- 我生平不爱学习,所以说不出什么洋洋洒洒的大道理,貌似也写不出妙语连珠的学术文章,有感于现在宅到极致的生活状态,故一篇图文并茂的文章诞生了(大
- Internet Explorer 9 Platform 1.9.7916.6000 Preview 4微软今天公布了IE9 Platfor
- 本文实例讲述了Python生成器定义与简单用法。分享给大家供大家参考,具体如下:一、什么是生成器在Python中,由于受到内存的限制,列表容
- 如何让animate在显示图片的过程保持窗口的标题不变animate -title "My Image Sequence"
- 不论什么时候,只要系统带有多个设备,而这些设备的性能又各不相同,就存在从慢速设备到快速设备不断更换工作地点以改善系统性能的可能性,这就是缓存
- 大多数网站维护都采用“多人协作,共同管理”方式。某个人负责一个(或者多个)栏目,他只能对他负责的栏目进
- 阅读上一章:Css布局Chapter 13 为文字指定样式我想以一章的篇幅来讨论用CSS设定文字样式的做法是个好点子.一般处理文字内容大概是
- 函数也是对象要理解Python装饰器,首先要明白在Python中,函数也是一种对象,因此可以把定义函数时的函数名看作是函数对象的一个引用。既