詳解如何通過Python制作一個密碼生成器
原由
定期更換密碼是一種非常重要的安全措施,這種做法可以有效地保護你的賬戶和個人信息不受黑客和網(wǎng)絡攻擊者的侵害。
密碼泄露是一個非常普遍的問題,許多人的賬戶和密碼經(jīng)常會被泄露出來,導致個人信息被盜用、金融損失、惡意軟件感染等嚴重問題。定期更換密碼可以減少這種風險,因為即使你的密碼被盜了,攻擊者也只能獲得你的信息和權(quán)限一段時間。
此外,定期更換密碼還可以提高你的賬戶安全性,因為許多人使用相同的密碼和用戶名登錄多個網(wǎng)站和服務,如果一個密碼被盜,黑客可以輕松地訪問其他帳戶。通過定期更換密碼,可以確保你的密碼不會被黑客用于其他服務,從而提高你的安全性。
編程思路
首先導入了 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)建標簽和輸入框,用于輸入密碼長度。然后,使用 tk.Button 創(chuàng)建生成按鈕,并將 generate_callback 函數(shù)指定為回調(diào)函數(shù)。接著,使用 tk.Label 和 tk.Entry 創(chuàng)建密碼編輯框,用于顯示生成的密碼。
最后,使用 tk.mainloop() 進入主事件循環(huán),等待用戶操作。當用戶點擊生成按鈕時,程序?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)建標簽和輸入框,用于輸入密碼長度 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()
效果如下
補充
除了上文的方法,小白還為大家準備了其他的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)文章
人工智能——K-Means聚類算法及Python實現(xiàn)
這篇文章主要介紹了人工智能——K-Means聚類算法及Python實現(xiàn),一個能夠找到我圈出的這?些點集的算法,就被稱為聚類算法,下面就來看看文章具體的介紹吧2022-01-01python實現(xiàn)的正則表達式功能入門教程【經(jīng)典】
這篇文章主要介紹了python實現(xiàn)的正則表達式功能,詳細分析了Python正則表達式中常用的各種符號、函數(shù)等的使用方法與注意事項,需要的朋友可以參考下2017-06-06Python實現(xiàn)按當前日期(年、月、日)創(chuàng)建多級目錄的方法
這篇文章主要介紹了Python 按當前日期(年、月、日)創(chuàng)建多級目錄的方法,實現(xiàn)代碼很簡單,需要的朋友可以參考下2018-04-04TensorFlow繪制loss/accuracy曲線的實例
今天小編就為大家分享一篇TensorFlow繪制loss/accuracy曲線的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01