python生成10个随机密码_python生成随机密码
很早之前寫過一個篇 利用pwgen、mkpasswd、tr自動更改密碼,后來又狗尾了篇用Linux命令行生成隨機密碼的十種方法 。前面至少還算是個系統功能,后面越來越寫越成爛大街的東西了。即然再爛了,不怕再加一個python版的生成隨機密碼的篇幅。
一、版本1
先來個詳述版的,這里相當于主機講了下random模塊和string模塊里一些方法,代碼如下:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#@author 運維之路(www.361way.com)
import string
from os import urandom
from random import choice
'''
Linux正則命名參考:http://vbird.dic.ksu.edu.tw/linux_basic/0330regularex.php#lang
[:alnum:]代表英文大小寫字節及數字,亦即 0-9, A-Z, a-z
[:alpha:]代表任何英文大小寫字節,亦即 A-Z, a-z
[:blank:]代表空白鍵與 [Tab] 按鍵兩者
[:cntrl:]代表鍵盤上面的控制按鍵,亦即包括 CR, LF, Tab, Del.. 等等
[:digit:]代表數字而已,亦即 0-9
[:graph:]除了空白字節 (空白鍵與 [Tab] 按鍵) 外的其他所有按鍵
[:lower:]代表小寫字節,亦即 a-z
[:print:]代表任何可以被列印出來的字節
[:punct:]代表標點符號 (punctuation symbol),亦即:" ' ? ! ; : # $...
[:upper:]代表大寫字節,亦即 A-Z
[:space:]任何會產生空白的字節,包括空白鍵, [Tab], CR 等等
[:xdigit:]代表 16 進位的數字類型,因此包括: 0-9, A-F, a-f 的數字與字節
Python自帶常量(本例中改用這個,不用手工定義了)
string.digits #十進制數字:0123456789
string.octdigits #八進制數字:01234567
string.hexdigits #十六進制數字:0123456789abcdefABCDEF
string.ascii_lowercase #小寫字母(ASCII):abcdefghijklmnopqrstuvwxyz
string.ascii_uppercase #大寫字母(ASCII):ABCDEFGHIJKLMNOPQRSTUVWXYZ
string.ascii_letters #字母:(ASCII)abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
string.punctuation #標點符號:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
以下的不用,有locale問題
string.lowercase #abcdefghijklmnopqrstuvwxyz
string.uppercase #ABCDEFGHIJKLMNOPQRSTUVWXYZ
string.letters #ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
以下的不能用
string.whitespace #On most systems this includes the characters space, tab, linefeed, return, formfeed, and vertical tab.
string.printable #digits, letters, punctuation, and whitespace
'''
#請在此設置您要生成的密碼需求
passwd_length = 20 #密碼長度
passwd_count = 100 #密碼個數
passwd_seed = string.digits + string.ascii_letters + string.punctuation #密碼種子
#passwd_seed = string.digits
#passwd_seed = string.digits + string.ascii_letters
def generate_passwd():
'''Function to generate a password'''
passwd = []
while (len(passwd) < passwd_length):
passwd.append(choice(passwd_seed))
return ''.join(passwd)
def print_string_constants():
'''Test Case'''
print string.digits
print string.octdigits
print string.hexdigits
print string.ascii_lowercase
print string.ascii_uppercase
print string.ascii_letters
print string.punctuation
print string.lowercase
print string.uppercase
print string.letters
print (string.printable + "ooo")
print string.whitespace
print '\n\n'
if __name__ == '__main__':
for i in range(0, passwd_count):
print generate_passwd()
這個版本不要看著長,其實很多代碼沒用,為了便于理解加上去上的,真正用的只是上面的import部分+ gen_pass函數部分 + main函數 。
二、版本2
#!/usr/bin/env python
# -*- coding=utf-8 -*-
import random, string#導入random和string模塊
def GenPassword(length):
#隨機出數字的個數
numOfNum = random.randint(1,length-1)
numOfLetter = length - numOfNum
#選中numOfNum個數字
slcNum = [random.choice(string.digits) for i in range(numOfNum)]
#選中numOfLetter個字母
slcLetter = [random.choice(string.ascii_letters) for i in range(numOfLetter)]
#打亂組合
slcChar = slcNum + slcLetter
random.shuffle(slcChar)
#生成隨機密碼
getPwd = ''.join([i for i in slcChar])
return getPwd
if __name__ == '__main__':
print GenPassword(6)
該版本代碼略多,只不過其中指定必須有數字,必須有字母,當然再改下,你還可以指定必須有特殊符號。
三、版本3
from random import randrange, sample
#定義列表
password_list = ['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a',
'0','1','2','3','4','5','6','7','8','9',
'!','@','#','$','%','^','&','*','(',')','_','+','-','=',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'
]
leng=15 #定義長度
password = "".join(sample(password_list, leng)).replace(' ', '')
print(password)
這里只是給了一個全示例,其實真實使用中時,如果上面的sting碼表如果都要的話,直接使用上面的sting里的方法更好,不過往往為了使密碼便于區分,會將I、l(小寫L)、1(數字1)、O與0(數字零)等去掉。這樣使用版本3就比較不錯。
四、版本4
#-*- coding:utf-8 -*-
'''
簡短地生成隨機密碼,包括大小寫字母、數字,可以指定密碼長度
'''
#生成隨機密碼
from random import choice
import string
#python3中為string.ascii_letters,而python2下則可以使用string.letters和string.ascii_letters
def GenPassword(length=8,chars=string.ascii_letters+string.digits):
return ''.join([choice(chars) for i in range(length)])
if __name__=="__main__":
#生成10個隨機密碼
for i in range(10):
#密碼的長度為8
print(GenPassword(8))
代碼簡少,是版本1的一個更簡化版本的變種,來自于python cookbook上的方法。
總結
以上是生活随笔為你收集整理的python生成10个随机密码_python生成随机密码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: -wl,-soname的作用
- 下一篇: 什么是分辨率