零基础做一个密码强度检测工具:弱密码一眼识破

举报
deli007 发表于 2026/08/11 10:08:43 2026/08/11
【摘要】 零基础也能做:一句需求交给码道,自动生成完整的密码强度检测 Python 项目,含 40 项单元测试全部通过,弱密码一眼识破。

一行需求,一个完整的 Python 项目 —— 含 40 项单元测试,全部通过。

引言

在日常开发中,密码强度检测是一个常见但容易被忽视的功能。无论是用户注册、密码修改还是安全审计,一个可靠的密码强度评估工具能有效提升系统安全性。传统做法需要开发者手动编写多维度检测逻辑、编写测试用例、整理文档——耗时且容易遗漏边界情况。

本文使用华为云码道(CodeArts)AI 编程助手,仅通过一句自然语言需求描述,自动生成一个功能完整的 Python 密码强度检测工具,包含 7 维度检测、5 级评分、彩色输出、批量检测等功能,以及 40 个单元测试用例,所有测试一次通过。

码道 AI 编程助手简介

码道(CodeArts)是华为云推出的 AI 编程助手,深度融合华为云生态,支持自然语言驱动的项目生成、代码补全、单元测试、代码审查等能力。开发者只需描述需求,码道即可自动完成项目搭建、代码编写和测试验证。

码道支持 CLI 和 TUI 两种交互模式,开发者可以在 Windows Terminal 中通过 codearts 命令启动交互式终端界面,通过自然语言描述需求,码道会自动分析、规划并生成完整项目代码。

任务描述

本次任务需求如下:

创建一个 Python 命令行密码强度检测工具 password_checker:

  1. 支持命令行输入密码或从标准输入读取
  2. 检测维度包括:长度(>8 分)、大小写字母、数字、特殊字符、常见密码黑名单
  3. 5 级评分(0-100 分)并映射为:极弱/弱/中/强/极强
  4. 输出彩色结果和详细反馈
  5. 项目结构包含 password_checker.py 主程序、test_password_checker.py 单元测试、requirements.txtREADME.md
  6. 使用 argparse 命令行参数,支持 --password 和 --file 批量检测

开发过程

需求输入

在 Windows Terminal 中启动码道 TUI,输入上述需求描述。码道首先解析需求,自动拆解为可执行的子任务。

需求输入

码道自动执行

码道解析需求后,自动规划任务并逐步执行:

  1. 创建 password_checker.py 主程序 - 实现 7 个检测维度的评分引擎
  2. 创建 test_password_checker.py 单元测试 - 40 个测试用例覆盖所有检测函数
  3. 创建 requirements.txt - 声明项目依赖(纯标准库)
  4. 创建 README.md - 完整的使用文档
  5. 自动运行测试验证 - 40 个测试全部通过

码道处理中

整个过程无需人工干预,码道自主完成了从需求分析、代码生成到测试验证的完整闭环。

代码解析

核心架构

项目采用函数式评分引擎设计,每个检测维度封装为独立函数,返回 (通过状态, 分值, 描述信息) 三元组:

def check_length(password):
    length = len(password)
    if length >= 16:
        return True, 25, f"长度优秀({length}字符)"
    elif length >= 12:
        return True, 20, f"长度良好({length}字符)"
    elif length >= 8:
        return True, 15, f"长度合格({length}字符)"
    else:
        return False, max(0, length * 2), f"长度不足({length}字符,建议至少8字符)"

其他检测函数(check_uppercase, check_lowercase, check_digit, check_special, check_common, check_sequential, check_repeated)遵循相同模式。

评分引擎

score_password() 函数聚合所有检测结果,映射到 5 级评分:

def score_password(password):
    checks = {}
    for check_fn in [check_length, check_uppercase, check_lowercase,
                     check_digit, check_special, check_common,
                     check_sequential, check_repeated]:
        passed, pts, msg = check_fn(password)
        checks[check_fn.__name__] = {"passed": passed, "points": pts, "message": msg}

    total = sum(c["points"] for c in checks.values())
    total = max(0, min(100, total))

    if total <= 20:    level = 0   # 极弱
    elif total <= 40:  level = 1   # 弱
    elif total <= 60:  level = 2   # 中
    elif total <= 80:  level = 3   # 强
    else:              level = 4   # 极强

    return PasswordResult(password, total, level, ...)

评分规则

检测维度 分值范围 说明
长度 0-25 ≥16 字符 25 分,≥12 字符 20 分,≥8 字符 15 分
大写字母 0-15 ≥2 个 15 分,≥1 个 10 分
小写字母 0-15 ≥2 个 15 分,≥1 个 10 分
数字 0-15 ≥3 个 15 分,≥1 个 10 分
特殊字符 0-20 ≥2 个 20 分,≥1 个 15 分
常见密码 -30-0 命中黑名单扣 30 分
连续字符 -15-0 ≥4 连续扣 15 分
重复字符 -10-0 ≥4 重复扣 10 分

命令行接口

使用 argparse 实现灵活的 CLI:

parser.add_argument("--password", "-p", type=str, help="直接输入待检测密码")
parser.add_argument("--file", "-f", type=str, help="从文件批量读取密码(每行一个)")
parser.add_argument("--no-color", action="store_true", help="禁用彩色输出")

支持三种输入方式:--password 参数、管道标准输入、--file 批量文件。

单元测试

测试文件包含 40 个测试用例,覆盖每个检测函数的所有分支:

class TestCheckLength(unittest.TestCase):
    def test_short_password(self): ...
    def test_eight_chars(self): ...
    def test_twelve_chars(self): ...
    def test_sixteen_chars(self): ...

class TestCLI(unittest.TestCase):
    def test_password_argument(self): ...  # 命令行参数模式
    def test_stdin_input(self): ...        # 标准输入模式
    def test_file_input(self): ...         # 文件批量模式

运行效果

强密码测试

$ python password_checker.py --password "MyStr0ng@Pass!2024" --no-color

密码: M****************4
评分: 90/100
等级: 极强
详细检测:
  ✓ 长度优秀(18字符)
  ✓ 大写字母优秀(3)
  ✓ 小写字母优秀(8)
  ✓ 数字优秀(5)
  ✓ 特殊字符优秀(2)
  ✓ 未命中常见密码黑名单
  ✓ 无过长连续字符
  ✓ 无过多重复字符

弱密码测试

$ python password_checker.py --password "123456" --no-color

密码: 1****6
评分: 0/100
等级: 极弱
详细检测:
  ✗ 长度不足(6字符,建议至少8字符)
  ✗ 缺少大写字母
  ✗ 缺少小写字母
  ✓ 数字优秀(6)
  ✗ 缺少特殊字符
  ✗ 命中常见密码黑名单
  ✗ 包含过长连续字符(6)
  ✓ 无过多重复字符

单元测试结果

$ python -m unittest test_password_checker -v
................  (40 tests)
----------------------------------------------------------------------
Ran 40 tests in 0.376s
OK

运行效果

能力总结

通过本次实践,码道展现了以下核心能力:

  1. 需求理解与任务拆解:将一句自然语言需求自动拆解为 5 个可执行子任务
  2. 代码生成质量:生成的代码结构清晰、命名规范、包含完整的文档字符串
  3. 7 维度检测引擎:一次生成覆盖所有检测维度,无需人工补充
  4. 完整测试覆盖:自动生成 40 个单元测试,覆盖正常路径和边界情况
  5. 零外部依赖:项目仅使用 Python 标准库,可直接运行
  6. 命令行友好:支持 argparse、管道输入、批量检测等多种使用方式

总结

本文演示了使用华为云码道 AI 编程助手,通过一句自然语言描述快速生成完整 Python 项目的过程。从需求输入到 40 个测试全部通过,全程自动完成,充分体现了 AI 辅助编程在提升开发效率方面的价值。

码道通过智能需求分析、任务规划、代码生成、测试验证的闭环,让开发者可以将更多精力投入在业务逻辑设计上,而非重复性的编码和测试工作。对于标准化程度高、模式固定的功能模块,码道能够显著缩短开发周期、降低出错概率。

注:本文项目代码由码道 AI 编程助手生成,测试结果来自实际执行,未做任何人工修改。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。