Python創(chuàng)建高強(qiáng)度密碼生成工具方法實例
規(guī)劃項目
學(xué)習(xí)編程最好的辦法就是實際寫一個項目,我們這里通過 Python 來編寫密碼生成器。
在互聯(lián)網(wǎng)時代,賬戶就像空氣一樣常見,創(chuàng)建強(qiáng)大而安全的密碼是一項任重道遠(yuǎn)的任務(wù)。雖然密碼生成工具數(shù)不勝數(shù),但是你有沒有想過通過自己的雙手來創(chuàng)建一個密碼生成工具,讓我們來構(gòu)建一個生成密碼的項目吧。
首先,在構(gòu)建之前、我們需要知道我們想從這個項目中得到什么,這個工具可以生成隨機(jī)數(shù)字、符號和字母組合的密碼。
我們在構(gòu)建項目時可以學(xué)到以下內(nèi)容:
• 變量和數(shù)據(jù)類型
• 用戶輸入和輸出
• 條件語句(if-else)
• 隨機(jī)數(shù)生成
• 函數(shù)
我們了解我們的目標(biāo)之后,繼續(xù)說明這個密碼工具的流程:
• 獲取密碼長度,在這里我把 12 作為默認(rèn)長度
• 創(chuàng)建字符池(小寫、大寫、符號、數(shù)字)
• 生成密碼
創(chuàng)建項目
1. 導(dǎo)入庫
首先要導(dǎo)入兩個必要的庫:string
和 random
。
string
庫提供各種與字符串相關(guān)的函數(shù)和常量。它包含 ascii_lowercase
、ascii_uppercase
、標(biāo)點符號和數(shù)字常量,分別代表相應(yīng)的字符集。
random
庫提供生成隨機(jī)數(shù)和序列的函數(shù)。它包含 choice()
函數(shù),可從給定序列中隨機(jī)選擇一個元素。
import string import random
2. 定義 generate_password() 函數(shù)
generate_password()
函數(shù)是密碼生成器的核心。它接受一個指定所需密碼長度的可選參數(shù) length
。
這個函數(shù)包含一個默認(rèn)參數(shù) length
,密碼字符長度,如果不提供這個參數(shù),那么就默認(rèn)使用 12 的長度。
字符池(character pool
)的生成來自 string
這個庫,包含了小寫字母 ascii_lowercase
,大寫字母 ascii_uppercase
、標(biāo)點符號 punctuation
和數(shù)字 digits
。
然后從字符池中隨機(jī)添加一個字符到 password
字符串中??梢岳斫鉃椴粩嗬奂拥?nbsp;length
限制的長度。
def generate_password(length=12): # 定義 character pool character_pool = string.ascii_lowercase + string.ascii_uppercase + string.punctuation + string.digits password = "" for _ in range(length): password += random.choice(character_pool) return password
3. 生成并展示密碼
在函數(shù)外部,代碼調(diào)用 generate_password()
函數(shù)生成隨機(jī)密碼。它將生成的密碼賦值給 generated_password
變量,并使用 print()
將其顯示給用戶。
generated_password = generate_password() print("你的密碼是:", generated_password)
不如我們?yōu)槊艽a生成器增加一些功能:
• 可以輸入密碼的長度
• 可以選擇是否使用符號、數(shù)字和大寫字母。
好了,讓我們在項目中添加新代碼。
4. 定義字符集
lowercase_letters = string.ascii_lowercase uppercase_letters = string.ascii_uppercase symbols = string.punctuation numbers = string.digits
這幾行代碼定義了四個變量:小寫字母、大寫字母、符號和數(shù)字。每個變量都包含一個字符串,其中包含相應(yīng)的字符集。string
模塊提供了這些常量,以便于訪問不同的字符組。
5. 根據(jù)用戶指定的標(biāo)準(zhǔn)創(chuàng)建密碼
character_pool = lowercase_letters if include_symbols: character_pool += symbols if include_numbers: character_pool += numbers if include_uppercase: character_pool += uppercase_letters
這些 if
語句會檢查用戶輸入的每種字符類型(符號、數(shù)字、大寫字母)。如果用戶表示要包含特定的字符類型,相應(yīng)的字符集就會附加到 character_pool
字符串中。這樣可以確保密碼生成器在生成密碼時添加指定的字符類型。
6. 生成密碼
for _ in range(length): password += random.choice(character_pool) return password
此循環(huán)迭代 length
次,其中 length
為指定的密碼長度。在每次迭代中,使用 random.choice()
函數(shù)從字符庫中隨機(jī)選擇一個字符。最后將返回密碼字符串。
7. 獲取用戶輸入的密碼標(biāo)準(zhǔn)
password_length = int(input("請輸入密碼長度:")) include_symbols = input("包含標(biāo)點符號 (y/n): ") == "y" include_numbers = input("包含數(shù)字 (y/n): ") == "y" include_uppercase = input("包含大寫字母 (y/n): ") == "y"
這幾行代碼用來收集用戶對密碼標(biāo)準(zhǔn)(長度、符號、數(shù)字和大寫字母)的要求,并將其存儲在相應(yīng)的變量中。
運(yùn)行代碼
基礎(chǔ)代碼:
import string import random def generate_password(length=12): # 定義 character pool character_pool = string.ascii_lowercase + string.ascii_uppercase + string.punctuation + string.digits password = "" for _ in range(length): password += random.choice(character_pool) return password # 生成并展示密碼 generated_password = generate_password() print("你生成的密碼是:", generated_password) # 運(yùn)行結(jié)果 # 你生成的密碼是:\{Ckz<@svHN!
完善后的代碼
允許用戶指定生成高強(qiáng)度的安全密碼:
import string import random def generate_password(length=12, include_symbols=True, include_numbers=True, include_uppercase=True): password = "" # 定義字符集 lowercase_letters = string.ascii_lowercase uppercase_letters = string.ascii_uppercase symbols = string.punctuation numbers = string.digits # 基于用戶的要求創(chuàng)建字符池 character_pool = lowercase_letters if include_symbols: character_pool += symbols if include_numbers: character_pool += numbers if include_uppercase: character_pool += uppercase_letters # 生成密碼 for _ in range(length): password += random.choice(character_pool) return password # 根據(jù)用戶輸入來確定密碼要求 password_length = int(input("請輸入密碼長度:")) include_symbols = input("包含標(biāo)點符號 (y/n):") == "y" include_numbers = input("包含數(shù)字 (y/n):") == "y" include_uppercase = input("包含大寫字母 (y/n):") == "y" # 生成并展示密碼 generated_password = generate_password(password_length, include_symbols, include_numbers, include_uppercase) print("你生成的密碼是:", generated_password)
運(yùn)行結(jié)果
請輸入密碼長度:6
包含標(biāo)點符號(y/n):y
包含數(shù)字 (y/n):y
包含大寫字母 (y/n):y
你生成的密碼是:z-=Sx<
這份代碼所構(gòu)建的密碼生成器是一款簡單有效的密碼生成工具。它允許用戶自定義密碼長度和字符類型,用途廣泛,可滿足個人需求。
以上就是Python創(chuàng)建高強(qiáng)度密碼生成工具方法實例的詳細(xì)內(nèi)容,更多關(guān)于Python創(chuàng)建密碼生成工具的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
刪除pandas中產(chǎn)生Unnamed:0列的操作
這篇文章主要介紹了刪除pandas中產(chǎn)生Unnamed:0列的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03Python函數(shù)式編程藝術(shù)之修飾器運(yùn)用場景探索
本文將詳細(xì)介紹Python修飾器的概念,提供詳細(xì)的示例,并介紹如何使用它們來優(yōu)化和擴(kuò)展代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11pandas read_excel()和to_excel()函數(shù)解析
這篇文章主要介紹了pandas read_excel()和to_excel()函數(shù)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09