[特殊字符] Python密码强度检测器:原理、代码与实战
·
一、为什么要检测密码强度?
密码是保护个人信息的第一道防线。弱密码容易被暴力破解或字典攻击,强密码则需要大量时间才能被攻破。因此,写一个密码强度检测器不仅能帮助自己设置安全密码,也能作为学习Python字符串操作的实用项目。
二、检测规则
本检测器从以下五个维度给密码打分:
| 规则 | 评分 |
|---|---|
| 长度≥8 | +1分 |
| 包含大写字母 | +1分 |
| 包含小写字母 | +1分 |
| 包含数字 | +1分 |
| 包含特殊字符(!@#$%^&*等) | +2分 |
总分范围0-6分,评级标准:
-
0-2分:弱密码 ❌
-
3-4分:中等密码 ⚠️
-
5-6分:强密码 ✅
三、完整代码
import re
def check_password_strength(password):
"""
检测密码强度
返回:得分、评级、具体建议
"""
score = 0
suggestions = []
# 1. 长度检查
if len(password) >= 8:
score += 1
else:
suggestions.append("密码长度建议至少8位")
# 2. 大写字母
if re.search(r'[A-Z]', password):
score += 1
else:
suggestions.append("建议包含大写字母")
# 3. 小写字母
if re.search(r'[a-z]', password):
score += 1
else:
suggestions.append("建议包含小写字母")
# 4. 数字
if re.search(r'[0-9]', password):
score += 1
else:
suggestions.append("建议包含数字")
# 5. 特殊字符(权重更高)
if re.search(r'[!@#$%^&*(),.?":{}|<>]', password):
score += 2
else:
suggestions.append("建议包含特殊字符(如 !@#$%^&*)")
# 评级
if score <= 2:
level = "弱密码 ❌"
elif score <= 4:
level = "中等密码 ⚠️"
else:
level = "强密码 ✅"
return score, level, suggestions
# ========== 使用示例 ==========
test_passwords = [
"123456",
"qwerty",
"ChenYixin2026",
"C@t!2026$ecure"
]
print("=" * 50)
print("密码强度检测结果")
print("=" * 50)
for pwd in test_passwords:
score, level, suggestions = check_password_strength(pwd)
print(f"\n密码:{pwd}")
print(f"得分:{score}/6")
print(f"评级:{level}")
if suggestions:
print("改进建议:")
for s in suggestions:
print(f" • {s}")


四、运行演示
text
================================================== 密码强度检测结果 ================================================== 密码:123456 得分:1/6 评级:弱密码 ❌ 改进建议: • 密码长度建议至少8位 • 建议包含大写字母 • 建议包含特殊字符(如 !@#$%^&*) 密码:ChenYixin2026 得分:4/6 评级:中等密码 ⚠️ 改进建议: • 建议包含特殊字符(如 !@#$%^&*) 密码:C@t!2026$ecure 得分:6/6 评级:强密码 ✅
五、扩展思路
1. 增加弱密码黑名单
python
WEAK_PASSWORDS = ("123456", "password", "qwerty", "admin", "welcome", "iloveyou")
if pwd.lower() in WEAK_PASSWORDS:
return "❌ 这个密码太常见了!"
2. 添加密码生成器
可以生成一个包含大小写字母、数字、特殊字符的随机密码,长度可由用户指定。
3. 用正则表达式优化检测
上面的代码已经使用了 re.search(),比手动遍历更简洁高效。
六、总结
-
密码强度由长度、字符种类共同决定
-
特殊字符的权重可以更高(因为更难被暴力破解)
-
re模块的正则表达式是字符串匹配的利器 -
此工具可用于日常密码自查,也可集成到注册系统
更多推荐


所有评论(0)