如何编写代码来有效检测密码强度?

python,import re,,def check_password_strength(password):, if len(password)< 8:, return "密码强度较弱", elif len(password)< 12:, return "密码强度一般", else:, pattern = r'^(?=.*[az])(?=.*[AZ])(?=.*d)(?=.*[@$!%*?&])[AZazd@$!%*?&]{8,}$', if re.match(pattern, password):, return "密码强度较强", else:, return "密码强度一般",,password = input("请输入密码:"),result = check_password_strength(password),print(result),

检测密码强度的代码

在现代网络环境中,密码安全至关重要,为了确保用户账户的安全,需要对密码进行强度检测,本文将展示如何使用Python编写一个检测密码强度的程序,并详细解释代码的逻辑和实现过程。

密码强度规则

1、密码长度

小于等于4个字符:5分

5到7个字符:10分

大于等于8个字符:25分

2、字母

没有字母:0分

全都是小写或大写字母:10分

大小写混合字母:20分

3、数字

没有数字:0分

1个数字:10分

大于等于3个数字:20分

4、符号

没有符号:0分

1个符号:10分

大于1个符号:25分

5、奖励

字母和数字:2分

如何编写代码来有效检测密码强度?

字母、数字和符号:3分

大小写字母、数字和符号:5分

6、分数规则

≥90分:非常安全

≥80分:安全

≥70分:非常强

≥60分:强

≥50分:一般

≥25分:弱

0分:非常弱

代码实现

import string
def check_password_strength(password):
    # 定义可输入的字符集
    digits = string.digits  # 数字
    lowercase = string.ascii_lowercase  # 小写字母
    uppercase = string.ascii_uppercase  # 大写字母
    punctuation = string.punctuation  # 标点符号
    
    # 检查合法性
    def legal(p):
        if set(p).difference(set(digits + lowercase + uppercase + punctuation)):
            print("Your password is illegal.")
            return False
        else:
            print("Your password is legal.")
            return True
    
    if not legal(password):
        return "Password strength unknown"
    
    # 计算密码强度得分
    length_score = len_password(password)
    letter_score = letter(password)
    number_score = number(password)
    symbol_score = symbol(password)
    
    # 累加奖励分
    reward = 0
    if any(char.isalpha() for char in password) and any(char.isdigit() for char in password):
        reward += 2
    if any(char.isalpha() for char in password) and any(char.isdigit() for char in password) and any(char in punctuation for char in password):
        reward += 1
    if any(char.isupper() for char in password) and any(char.islower() for char in password) and any(char.isdigit() for char in password) and any(char in punctuation for char in password):
        reward += 2
    
    # 总评分
    total_score = length_score + letter_score + number_score + symbol_score + reward
    
    # 根据总分判断密码强度
    if total_score >= 90:
        return "Very Safe"
    elif total_score >= 80:
        return "Safe"
    elif total_score >= 70:
        return "Very Strong"
    elif total_score >= 60:
        return "Strong"
    elif total_score >= 50:
        return "Average"
    elif total_score >= 25:
        return "Weak"
    else:
        return "Very Weak"
def len_password(p):
    if len(p) <= 4:
        return 5
    elif len(p) <= 7:
        return 10
    else:
        return 25
def letter(p):
    count = 0
    for i in p:
        if i.isalpha():
            count += 1
    if count == 0:
        return 0
    elif p.isupper() or p.islower():
        return 10
    else:
        return 20
def number(p):
    num_list = []
    try:
        for i in p:
            if int(i):
                num_list.append(i)
    except:
        pass
    if not num_list:
        return 0
    elif len(num_list) < 3:
        return 10
    else:
        return 20
def symbol(p):
    a = set(p).difference(set(string.digits + string.ascii_letters))
    if not a:
        return 0
    elif len(a) == 1:
        return 10
    else:
        return 25
测试代码
while True:
    password = input("请输入你的密码(输入'q'退出):")
    if password.lower() == 'q':
        break
    print(check_password_strength(password))

FAQs 常见问题解答

问题1:如何增加密码的安全性?

回答:可以通过以下几种方法增加密码的安全性:

1、增加密码长度:建议密码长度至少为12个字符。

2、使用多种字符类型:确保密码包含大写字母、小写字母、数字和特殊字符。

3、避免常见词汇:不要使用常见词汇、姓名或生日等容易被猜到的信息。

4、定期更换密码:定期更新密码,避免长期使用同一个密码。

5、使用密码管理器:密码管理器可以帮助生成和存储复杂的密码,减少记忆负担。

问题2:为什么需要检测密码强度?

回答:检测密码强度是为了确保用户的账户安全,通过评估密码的复杂性和多样性,可以有效防止暴力破解和字典攻击,提高账户的安全性。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1105398.html

(0)
未希的头像未希新媒体运营
上一篇 2024-09-30 03:15
下一篇 2024-09-30 03:18

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入