IT评测·应用市场-qidao123.com

标题: 安全密码生成器 [打印本页]

作者: 兜兜零元    时间: 2025-3-20 13:44
标题: 安全密码生成器
功能实现说明

1. 灵活配置


2. 安全增强


3. 用户体验


 功能代码
import tkinter as tk
from tkinter import ttk, messagebox
import secrets
import string
import pyperclip
class PasswordGenerator:
    def __init__(self, master):
        self.master = master
        master.title("安全密码生成器")
        master.geometry("400x300")
        master.resizable(False, False)
        # 控件变量初始化
        self.length_var = tk.StringVar(value="12")
        self.upper_var = tk.BooleanVar(value=True)
        self.lower_var = tk.BooleanVar(value=True)
        self.digits_var = tk.BooleanVar(value=True)
        self.symbols_var = tk.BooleanVar(value=True)
        self.password_var = tk.StringVar()
        # 界面布局
        self.create_widgets()
    def create_widgets(self):
        """构建图形界面"""
        # 密码长度输入
        ttk.Label(self.master, text="密码长度:").grid(row=0, column=0, padx=10, pady=10, sticky="w")
        length_entry = ttk.Entry(self.master, textvariable=self.length_var, width=10)
        length_entry.grid(row=0, column=1, sticky="w")
        # 字符类型选择
        ttk.Checkbutton(self.master, text="大写字母(A-Z)", variable=self.upper_var).grid(row=1, column=0, sticky="w", padx=10)
        ttk.Checkbutton(self.master, text="小写字母(a-z)", variable=self.lower_var).grid(row=2, column=0, sticky="w", padx=10)
        ttk.Checkbutton(self.master, text="数字(0-9)", variable=self.digits_var).grid(row=3, column=0, sticky="w", padx=10)
        ttk.Checkbutton(self.master, text="符号(!@#$)", variable=self.symbols_var).grid(row=4, column=0, sticky="w", padx=10)
        # 生成按钮
        ttk.Button(self.master, text="生成密码", command=self.generate_password).grid(row=5, column=0, pady=15, columnspan=2)
        # 密码显示
        ttk.Label(self.master, text="生成效果:").grid(row=6, column=0, padx=10, sticky="w")
        result_entry = ttk.Entry(self.master, textvariable=self.password_var, state="readonly", width=25)
        result_entry.grid(row=6, column=1, sticky="w")
        # 复制按钮
        ttk.Button(self.master, text="复制密码", command=self.copy_password).grid(row=7, column=0, pady=10, columnspan=2)
    def generate_password(self):
        """核心生成逻辑"""
        try:
            # 参数校验
            length = int(self.length_var.get())
            charset = self.build_charset()
            
            # 安全检测
            if not charset:
                raise ValueError("请至少选择一种字符类型")
            if length < 8:
                messagebox.showwarning("安全警告", "密码长度建议≥8位!")
            # 密码生成
            password = ''.join(secrets.choice(charset) for _ in range(length))
            self.password_var.set(password)
            pyperclip.copy(password)  # 主动复制到剪贴板
        except ValueError as e:
            messagebox.showerror("参数错误", f"输入无效:{str(e)}")
        except Exception as e:
            messagebox.showerror("系统错误", f"生成失败:{str(e)}")
    def build_charset(self):
        """构建字符集"""
        charset = ""
        if self.upper_var.get(): charset += string.ascii_uppercase
        if self.lower_var.get(): charset += string.ascii_lowercase
        if self.digits_var.get(): charset += string.digits
        if self.symbols_var.get(): charset += string.punctuation
        return charset
    def copy_password(self):
        """复制到剪贴板"""
        if self.password_var.get():
            pyperclip.copy(self.password_var.get())
            messagebox.showinfo("操作成功", "密码已复制到剪贴板")
if __name__ == "__main__":
    root = tk.Tk()
    app = PasswordGenerator(root)
    root.mainloop()

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4