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
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复