日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python生成10个随机密码_python生成随机密码

發布時間:2023/12/15 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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生成随机密码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。