吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1667|回复: 9
收起左侧

[Python 原创] Python密码强度检测器

[复制链接]
hrh123 发表于 2023-6-5 21:23
一个非常简单的密码强度检测器,因为功能过于简单,我这几天将原来的代码重构了遍,让它起码有点质量能拿出来分享
import re
import tkinter as tk

class PasswordStrength:
    STRENGTHS = [
        ("无效的密码", "red"),
        ("非常弱的密码", "orange"),
        ("弱的密码", "yellow"),
        ("一般的密码", "green"),
        ("强的密码", "blue"),
        ("非常强的密码", "purple"),
    ]

    def __init__(self, password):
        self.password = password
        self.value = self.calculate_strength()
        self.text, self.color = self.STRENGTHS[self.value]

    def calculate_strength(self):
        strength = 0
        if len(self.password) >= 8:
            strength += 1
        if re.search(r"\d", self.password):
            strength += 1
        if re.search(r"[a-z]", self.password):
            strength += 1
        if re.search(r"[A-Z]", self.password):
            strength += 1
        if re.search(r"[!@#$%^&*()_+-=]", self.password):
            strength += 1
        return strength

class GUI(tk.Frame):
    def __init__(self, master):
        super().__init__(master)
        master.title("密码强度检测器")
        master.geometry(
            "400x200+{}+{}".format(
                (master.winfo_screenwidth() - 400) // 2,
                (master.winfo_screenheight() - 200) // 2,
            )
        )
        master.resizable(False, False)
        self.label = tk.Label(self, text="请输入密码:", font=("宋体", 16))
        self.entry = tk.Entry(self, show="*", font=("宋体", 16))
        self.entry.bind("<Return>", self.check)
        self.button = tk.Button(self, text="检测", font=("宋体", 16))
        self.button.bind("<Button-1>", self.check)
        self.result = tk.Label(self, text=" ", font=("宋体", 16), fg="gray")
        self.label.grid(row=0, column=0, padx=10, pady=10)
        self.entry.grid(row=0, column=1, padx=10, pady=10)
        self.button.grid(row=0, column=2, padx=10, pady=10)
        self.result.grid(row=1, column=0, columnspan=3, padx=10, pady=10)
        self.pack()

    def check(self, event):
        password = self.entry.get()
        strength = PasswordStrength(password)
        self.result.config(text=strength.text, fg=strength.color)

root = tk.Tk()
gui = GUI(root)
root.mainloop()

免费评分

参与人数 2吾爱币 +5 热心值 +2 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
YuanFang0w0 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Love0912 发表于 2023-6-6 09:36
写的不错哟,不过有些想法想问一句,密码真的要大于8位以上才是高强度么,我反而觉得根据现在人的思维不如逆向一把,低于2位的密码也不容易被发现,一般情况下字典里都不考虑个位数密码了
土鸡炖蘑菇 发表于 2023-6-6 09:53
Love0912 发表于 2023-6-6 09:36
写的不错哟,不过有些想法想问一句,密码真的要大于8位以上才是高强度么,我反而觉得根据现在人的思维不如 ...

反向思维,我有的东西密码就是一个字符而已
jiuzhou888 发表于 2023-6-6 14:10
学习了,大神的原创不错,感谢分享!顶上去。
三滑稽甲苯 发表于 2023-6-6 14:20
顺便做一个强密码生成器吧,和检测器放一起

免费评分

参与人数 1热心值 +1 收起 理由
hrh123 + 1 之前写过,我的第一个帖子就是

查看全部评分

Jormungand911 发表于 2023-6-6 14:49
Love0912 发表于 2023-6-6 09:36
写的不错哟,不过有些想法想问一句,密码真的要大于8位以上才是高强度么,我反而觉得根据现在人的思维不如 ...

这个确实是,之前看一个监控录像机,试了各种密码都不对,结果后面找了厂家才晓得原来没得密码
zduyiwuer 发表于 2023-6-6 17:50
学习了,感谢分享
 楼主| hrh123 发表于 2023-6-6 20:29
Love0912 发表于 2023-6-6 09:36
写的不错哟,不过有些想法想问一句,密码真的要大于8位以上才是高强度么,我反而觉得根据现在人的思维不如 ...

这倒是,不过往字典里放几个个位数密码远比准备8位以上密码简单得多,低于2位的密码虽然不常见,但也很容易被暴力破解,因为可能的组合数很少,所以我更建议你使用一个足够长且随机的密码
Love0912 发表于 2023-6-26 11:36
hrh123 发表于 2023-6-6 20:29
这倒是,不过往字典里放几个个位数密码远比准备8位以上密码简单得多,低于2位的密码虽然不常见,但也很容易 ...

说的很有道理。所以我选择了显示密码框,但是不设置密码,这样他但凡考虑密码的问题他就掉入了我的陷阱唯一缺陷不防傻白甜~
Love0912 发表于 2023-6-26 11:37
Jormungand911 发表于 2023-6-6 14:49
这个确实是,之前看一个监控录像机,试了各种密码都不对,结果后面找了厂家才晓得原来没得密码

所以老祖宗告诉我们大道至简,往往越简单的东西越有效~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表