Python生成随机密码

来自linux中国网wiki
docker>Evan2017年3月20日 (一) 09:27的版本 →‎起因
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

python生成随机密码

起因

早上帮虾哥搞个mysql 一时不知要用什么密码比较好,于是想到这几天在学习python 那就让万能的python出来吧 哈哈 

string模块中的3个函数:string.letters,string.printable,string.printable。以下是这几个函数的输出,大家可以看一下,不用多讲:

In [1]: import string 
In [2]: string.letters
Out[2]: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'

In [3]: string.digits
Out[3]: '0123456789'

In [4]: string.printable
Out[4]: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'

主体

主体代码

以下是随机生成4组包含数字、大小写字母的随机数生成方法,大家可以指定随机数的长度:

#!/usr/bin/python
#-*- coding:utf-8 -*-
'''
make_password.py
简短地生成随机密码,包括大小写字母、数字,可以指定密码长度
'''
#生成随机密码
import random
import string
#python3中为string.ascii_letters,而python2下则可以使用string.letters和string.ascii_letters
def GenPassword(length):
    chars=string.ascii_letters+string.digits
    return ''.join([random.choice(chars) for i in range(length)])#得出的结果中字符会有重复的
    #return ''.join(random.sample(chars, 15))#得出的结果中字符不会有重复的
if __name__=="__main__":
    #生成10个随机密码  
    for i in range(4):
        #密码的长度为15
        print GenPassword(15)

代码解说


首先是join 
In [35]: str='-'
In [36]: seq =['x','y','z']
In [37]: print str.join(seq);
x-y-z

#所有字母和数字
In [30]: chars=string.ascii_letters+string.digits

In [31]: chars
Out[31]: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'

##随机选择两个字符
In [32]: [random.choice(chars) for i in range(2)]
Out[32]: ['5', 'l']

In [33]: [random.choice(chars) for i in range(2)]
Out[33]: ['Q', 'v']

#把字符 串在一起  中间没有空格哦 
In [34]: ''.join([random.choice(chars) for i in range(2)])
Out[34]: '9x'


参考

http://wangwei007.blog.51cto.com/68019/1224833

http://www.ttlsa.com/python/python-random-password/

python join 和 split的常用使用方法

http://wangwei007.blog.51cto.com/68019/1100587 http://www.runoob.com/python/att-string-join.html