詳解如何通過Python制作一個密碼生成器
原由
定期更換密碼是一種非常重要的安全措施,這種做法可以有效地保護你的賬戶和個人信息不受黑客和網(wǎng)絡(luò)攻擊者的侵害。
密碼泄露是一個非常普遍的問題,許多人的賬戶和密碼經(jīng)常會被泄露出來,導(dǎo)致個人信息被盜用、金融損失、惡意軟件感染等嚴重問題。定期更換密碼可以減少這種風(fēng)險,因為即使你的密碼被盜了,攻擊者也只能獲得你的信息和權(quán)限一段時間。
此外,定期更換密碼還可以提高你的賬戶安全性,因為許多人使用相同的密碼和用戶名登錄多個網(wǎng)站和服務(wù),如果一個密碼被盜,黑客可以輕松地訪問其他帳戶。通過定期更換密碼,可以確保你的密碼不會被黑客用于其他服務(wù),從而提高你的安全性。
編程思路
首先導(dǎo)入了 Python 的 tkinter 模塊和之前編寫的生成隨機密碼的函數(shù)。然后,定義了一個 generate_callback 回調(diào)函數(shù),用于生成隨機密碼,并將其顯示在密碼編輯框中。
在 generate_callback 函數(shù)中,首先使用 password_length_var.get() 獲取用戶輸入的密碼長度,然后調(diào)用之前編寫的 generate_password 函數(shù)生成密碼。最后,使用 password_edit.delete() 和 password_edit.insert() 方法將密碼顯示在密碼編輯框中。
在主程序中,使用 tk.Label 和 tk.Entry 創(chuàng)建標(biāo)簽和輸入框,用于輸入密碼長度。然后,使用 tk.Button 創(chuàng)建生成按鈕,并將 generate_callback 函數(shù)指定為回調(diào)函數(shù)。接著,使用 tk.Label 和 tk.Entry 創(chuàng)建密碼編輯框,用于顯示生成的密碼。
最后,使用 tk.mainloop() 進入主事件循環(huán),等待用戶操作。當(dāng)用戶點擊生成按鈕時,程序?qū)⒆詣诱{(diào)用 generate_callback 函數(shù)生成隨機密碼,并將其顯示在密碼編輯框中。
代碼
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)
# 創(chuàng)建主窗口
root = tk.Tk()
root.title("生成隨機密碼")
# 創(chuàng)建標(biāo)簽和輸入框,用于輸入密碼長度
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)
# 創(chuàng)建生成按鈕
generate_button = tk.Button(root, text="生成密碼", command=generate_callback)
generate_button.grid(row=1, column=0, padx=5, pady=5)
# 創(chuàng)建密碼編輯框,用于顯示生成的密碼
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)
# 進入主事件循環(huán)
root.mainloop()效果如下

補充
除了上文的方法,小白還為大家準(zhǔn)備了其他的Python實現(xiàn)密碼生成的方法,需要的可以參考一下
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個數(shù)字
teshuzifu = [64, 63, 96] # 定義特殊字符@ ? \ 特殊字符就給了一個列表,因為assci碼沒有連續(xù)的
random3_list = [daxiezimu, xiaoxiezimu, teshuzifu]
for i in random3_list: # 循環(huán)需要隨機生成0-3位的大小寫字母跟特殊字符
for j in range(random.randint(1, 3)): # 隨機循環(huán)0-3的次數(shù)
res.append(chr(random.choice(i))) # chr將ascii碼轉(zhuǎn)為字符 random.choice(i)隨機從i中取出一個數(shù)
x = total_len - len(res) #需要生成x位長度的數(shù)字
for k in range(x): #需要生成多少位的數(shù)字就循環(huán)幾次
res.append(chr(random.choice(shuzi)))
random.shuffle(res) # random.shuffle(列表對象) 用來打亂列表Python實現(xiàn)密碼生成器
import random
import string
from gooey import GooeyParser,Gooey
@Gooey(encoding='utf8',program_name='強密碼生成器',program_description='用于生成包含大小寫字母、數(shù)字、特殊符號的強密碼',optional_cols=1)
def stronge_password():
parse = GooeyParser(description='用于生成包含大小寫字母、數(shù)字、特殊符號的強密碼')
parse.add_argument('數(shù)量',widget='TextField')
parse.add_argument('長度',widget='TextField')
parse.add_argument('數(shù)字',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.數(shù)字 == "是":
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.數(shù)量)):
result = ''.join([random.choice(letter_list) for i in range(int(args.長度))])
print(result)
if __name__ == '__main__':
stronge_password()到此這篇關(guān)于詳解如何通過Python制作一個密碼生成器的文章就介紹到這了,更多相關(guān)Python密碼生成器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python讀取一個目錄下所有txt里面的內(nèi)容方法
今天小編就為大家分享一篇python讀取一個目錄下所有txt里面的內(nèi)容方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
Python使用matplotlib實現(xiàn)的圖像讀取、切割裁剪功能示例
這篇文章主要介紹了Python使用matplotlib實現(xiàn)的圖像讀取、切割裁剪功能,結(jié)合實例形式分析了Python基于matplotlib操作圖片的加載、讀取、坐標(biāo)控制及裁剪相關(guān)操作技巧,需要的朋友可以參考下2018-04-04
使用Python第三方庫xlrd讀取Excel中的數(shù)據(jù)的流程步驟
這篇文章主要給大家介紹了使用Python第三方庫xlrd讀取Excel中的數(shù)據(jù)的流程步驟,文中通過代碼示例給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-12-12
Python數(shù)據(jù)讀寫之Python讀寫CSV文件
這篇文章主要介紹了Python數(shù)據(jù)讀寫之Python讀寫CSV文件,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-06-06

