Python 生成随机密码

凉白开 python420,68516字数 2292阅读7分38秒阅读模式

生成随机密码这件事情用python来干确实相当的方便,优美的string方法加上choice简直是绝配

make_password.py

###简单几行代码执行即可生成记不住的字符串###文章源自运维生存时间-https://www.ttlsa.com/python/python-random-password/

$ 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##

 文章源自运维生存时间-https://www.ttlsa.com/python/python-random-password/

生成一些人似乎能好记一些的密码(Qs4Wm84q这种密码似乎除了复制粘贴没有别的选择,话说前年我使用shell生成的类似的密码给ldap做默认密码,我当时公司就真有员工把这样的密码背下来了,现在想想真心是厉害~~~)。文章源自运维生存时间-https://www.ttlsa.com/python/python-random-password/

##这样看起来是比上面的好记一点了吧,但需要提供一个字典文件##文章源自运维生存时间-https://www.ttlsa.com/python/python-random-password/

$ python make_dictpass.py 1 8 1
 ipythosd
$ python make_dictpass.py
 nahontchen
 chenyibfeo
 ipythoniue
 coreostche
 ...

代码如下文章源自运维生存时间-https://www.ttlsa.com/python/python-random-password/

#!/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.ttlsa.com/python/python-random-password/文章源自运维生存时间-https://www.ttlsa.com/python/python-random-password/
weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
凉白开
  • 本文由 发表于 25/06/2015 22:24:13
  • 转载请务必保留本文链接:https://www.ttlsa.com/python/python-random-password/
评论  4  访客  4
    • 匿名
      匿名 9

      直接mkpasswd -l xx位 就可以了啊。包括字母,大小写,特殊字符,数字混合,想多复杂就多复杂,何必搞得那么麻烦呢?

      • 月晓新城
        月晓新城 9

        学习了

        • aa
          aa 9

          密码这活还是需要有特殊字符的

          • 卷毛
            卷毛 1

            密码这事儿,还希望能够同时有数字和英文字母存在呢

          评论已关闭!