詳解如何通過Python制作一個密碼生成器

原由

定期更換密碼是一種非常重要的安全措施,這種做法可以有效地保護你的賬戶和個人信息不受黑客和網絡攻擊者的侵害。

密碼泄露是一個非常普遍的問題,許多人的賬戶和密碼經常會被泄露出來,導致個人信息被盜用、金融損失、惡意軟件感染等嚴重問題。定期更換密碼可以減少這種風險,因為即使你的密碼被盜瞭,攻擊者也隻能獲得你的信息和權限一段時間。

此外,定期更換密碼還可以提高你的賬戶安全性,因為許多人使用相同的密碼和用戶名登錄多個網站和服務,如果一個密碼被盜,黑客可以輕松地訪問其他帳戶。通過定期更換密碼,可以確保你的密碼不會被黑客用於其他服務,從而提高你的安全性。

編程思路

首先導入瞭 Python 的 tkinter 模塊和之前編寫的生成隨機密碼的函數。然後,定義瞭一個 generate_callback 回調函數,用於生成隨機密碼,並將其顯示在密碼編輯框中。

在 generate_callback 函數中,首先使用 password_length_var.get() 獲取用戶輸入的密碼長度,然後調用之前編寫的 generate_password 函數生成密碼。最後,使用 password_edit.delete() 和 password_edit.insert() 方法將密碼顯示在密碼編輯框中。

在主程序中,使用 tk.Label 和 tk.Entry 創建標簽和輸入框,用於輸入密碼長度。然後,使用 tk.Button 創建生成按鈕,並將 generate_callback 函數指定為回調函數。接著,使用 tk.Label 和 tk.Entry 創建密碼編輯框,用於顯示生成的密碼。

最後,使用 tk.mainloop() 進入主事件循環,等待用戶操作。當用戶點擊生成按鈕時,程序將自動調用 generate_callback 函數生成隨機密碼,並將其顯示在密碼編輯框中。

代碼

import tkinter as tk
import random
import string
 
def generate_password(length):
    # 可以自定義密碼中包含的字符集
    characters = string.ascii_letters + string.digits
    # 生成指定長度的隨機密碼
    password = ''.join(random.choice(characters) for i in range(length))
    return password
 
def generate_callback():
    # 獲取密碼長度
    password_length = int(password_length_var.get())
    # 生成密碼
    password = generate_password(password_length)
    # 將密碼顯示在編輯框中
    password_edit.delete(0, tk.END)
    password_edit.insert(0, password)
 
# 創建主窗口
root = tk.Tk()
root.title("生成隨機密碼")
 
# 創建標簽和輸入框,用於輸入密碼長度
password_length_label = tk.Label(root, text="請輸入要生成的密碼長度:")
password_length_label.grid(row=0, column=0, padx=5, pady=5)
password_length_var = tk.StringVar()
password_length_edit = tk.Entry(root, textvariable=password_length_var)
password_length_edit.grid(row=0, column=1, padx=5, pady=5)
 
# 創建生成按鈕
generate_button = tk.Button(root, text="生成密碼", command=generate_callback)
generate_button.grid(row=1, column=0, padx=5, pady=5)
 
# 創建密碼編輯框,用於顯示生成的密碼
password_edit_label = tk.Label(root, text="生成的密碼:")
password_edit_label.grid(row=2, column=0, padx=5, pady=5)
password_edit = tk.Entry(root)
password_edit.grid(row=2, column=1, padx=5, pady=5)
 
# 進入主事件循環
root.mainloop()

效果如下

補充

除瞭上文的方法,小白還為大傢準備瞭其他的Python實現密碼生成的方法,需要的可以參考一下

python 隨機生成密碼

# 這裡主要是以ascii碼去表示上訴的字符串
#表示26個字母,查詢ascci碼的表示是65, 90,但是我是使用range表示,左閉右開,步長為一
import random
total_len = 12 #密碼總長為12 
daxiezimu = range(65,91, 1)  # 定義26個大寫字母列表
xiaoxiezimu = range(97, 123, 1)  # 定義26個大寫字母列表
shuzi = range(48, 58, 1) # 定義0-9個數字
teshuzifu = [64, 63, 96]  # 定義特殊字符@ ? \ 特殊字符就給瞭一個列表,因為assci碼沒有連續的
random3_list = [daxiezimu, xiaoxiezimu, teshuzifu]
for i in random3_list: # 循環需要隨機生成0-3位的大小寫字母跟特殊字符
    for j in range(random.randint(1, 3)): # 隨機循環0-3的次數
       res.append(chr(random.choice(i))) # chr將ascii碼轉為字符 random.choice(i)隨機從i中取出一個數
x = total_len - len(res) #需要生成x位長度的數字
for k in range(x):  #需要生成多少位的數字就循環幾次
    res.append(chr(random.choice(shuzi)))
random.shuffle(res)   # random.shuffle(列表對象)  用來打亂列表

Python實現密碼生成器

import random
import string

from gooey import GooeyParser,Gooey
@Gooey(encoding='utf8',program_name='強密碼生成器',program_description='用於生成包含大小寫字母、數字、特殊符號的強密碼',optional_cols=1)
def stronge_password():
parse = GooeyParser(description='用於生成包含大小寫字母、數字、特殊符號的強密碼')
parse.add_argument('數量',widget='TextField')
parse.add_argument('長度',widget='TextField')
parse.add_argument('數字',widget='Dropdown',choices={"是":1,"否":0},default='是')
parse.add_argument('大寫字母',widget='Dropdown',choices={"是":1,"否":0},default='否')
parse.add_argument('小寫字母',widget='Dropdown',choices={"是":1,"否":0},default='否')
parse.add_argument('特殊符號',widget='Dropdown',choices={"是":1,"否":0},default='否')
parse.add_argument('去除詞',widget='TextField',default='None')
args = parse.parse_args()
if args.數字 == "是":
digits = list(string.digits.strip())
else:
digits = []
if args.大寫字母:
upper = list(string.ascii_uppercase)
else:
upper = []
if args.小寫字母:
lower = list(string.ascii_lowercase)
else:
lower = []
if args.特殊符號:
symbol = list("~!@#$%^&*()_+{}[]/?")
else:
symbol = []
if args.去除詞 != 'None':
stop_word = list(args.去除詞.strip())
else:
stop_word = []
letter_list = digits + upper + lower + symbol
for item in stop_word:
if item in letter_list:
letter_list.remove(item)
for i in range(int(args.數量)):
result = ''.join([random.choice(letter_list) for i in range(int(args.長度))])
print(result)

if __name__ == '__main__':
stronge_password()

到此這篇關於詳解如何通過Python制作一個密碼生成器的文章就介紹到這瞭,更多相關Python密碼生成器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: