用 Python 写一个检查密码强度的小工具
【摘要】 用 Python 写一个 30 行左右的密码强度检查小工具,从长度、大小写字母、数字、特殊字符四个维度打分,给出弱、中、强三个等级和改进建议,只用标准库,直接运行。
注册、改密码时,经常要判断一个密码够不够强。今天写一个只有 30 行左右的小工具:从长度、大小写字母、数字、特殊字符四个维度打分,给出“弱 / 中 / 强”,并提示缺了什么。只用 Python 标准库,直接运行。
代码
import re
def check_strength(password: str) -> dict:
"""检查密码强度,返回分数、等级和改进建议。"""
score = 0
tips = []
if len(password) >= 12:
score += 2
elif len(password) >= 8:
score += 1
else:
tips.append("长度至少 8 位,建议 12 位以上")
if re.search(r"[a-z]", password):
score += 1
else:
tips.append("加入小写字母")
if re.search(r"[A-Z]", password):
score += 1
else:
tips.append("加入大写字母")
if re.search(r"\d", password):
score += 1
else:
tips.append("加入数字")
if re.search(r"[^A-Za-z0-9]", password):
score += 1
else:
tips.append("加入特殊字符,例如 ! @ #")
level = "弱" if score <= 2 else "中" if score <= 4 else "强"
return {"分数": score, "等级": level, "建议": tips}
if __name__ == "__main__":
demo = ["abc123", "Hello2026", "Tr4v3l!2026"]
for pwd in demo:
result = check_strength(pwd)
print(pwd, "->", result["等级"], "分数", result["分数"], "建议", result["建议"])
运行结果
abc123 -> 弱 分数 2 建议 ['长度至少 8 位,建议 12 位以上', '加入大写字母', '加入特殊字符,例如 ! @ #']
Hello2026 -> 中 分数 4 建议 ['加入特殊字符,例如 ! @ #']
Tr4v3l!2026 -> 强 分数 6 建议 []
注意
这个小工具只在本地做规则检查,不联网、不保存密码。文中出现的密码只是演示用的示例,不要在真实账号里使用。真正设置密码时,长度优先,再混用三类以上字符,并且不要在多个网站共用同一个密码。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)