news 2026/8/11 2:21:58

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
零基础做一个密码强度检测工具:弱密码一眼识破

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

引言

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

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

码道 AI 编程助手简介

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

  • 开通地址:https://developer.huaweicloud.com/codeartsco.html?source=dmzntgwsf&sourcead=dmzntgwwbwz
  • AK/SK 配置页:https://codearts.huaweicloud.com/portal/settings/cli-auth

码道支持 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.txt、README.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 个测试全部通过

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

代码解析

核心架构

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

defcheck_length(password):length=len(password)iflength>=16:returnTrue,25,f"长度优秀({length}字符)"eliflength>=12:returnTrue,20,f"长度良好({length}字符)"eliflength>=8:returnTrue,15,f"长度合格({length}字符)"else:returnFalse,max(0,length*2),f"长度不足({length}字符,建议至少8字符)"

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

评分引擎

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

defscore_password(password):checks={}forcheck_fnin[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"]forcinchecks.values())total=max(0,min(100,total))iftotal<=20:level=0# 极弱eliftotal<=40:level=1# 弱eliftotal<=60:level=2# 中eliftotal<=80:level=3# 强else:level=4# 极强returnPasswordResult(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 个测试用例,覆盖每个检测函数的所有分支:

classTestCheckLength(unittest.TestCase):deftest_short_password(self):...deftest_eight_chars(self):...deftest_twelve_chars(self):...deftest_sixteen_chars(self):...classTestCLI(unittest.TestCase):deftest_password_argument(self):...# 命令行参数模式deftest_stdin_input(self):...# 标准输入模式deftest_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-munittest test_password_checker-v................(40tests)---------------------------------------------------------------------- Ran40testsin0.376s OK

能力总结

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

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

总结

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

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/11 2:21:35

Linux文件I/O操作与重定向机制详解

1. Linux文件I/O的核心地位与学习价值在Linux系统编程中&#xff0c;文件I/O操作就像城市的地下管网系统——虽然普通用户看不见&#xff0c;但支撑着所有应用的数据流动。从最简单的cat命令到复杂的数据库系统&#xff0c;底层都依赖文件描述符&#xff08;file descriptor&am…

作者头像 李华
网站建设 2026/8/11 2:20:28

直播电商团队人才梯队建设与管理的核心策略

1. 直播团队人才梯队建设的核心价值 直播电商行业从2020年开始爆发式增长&#xff0c;到2023年市场规模已突破4.9万亿元。在这个快速发展的赛道中&#xff0c;我见过太多团队因为人才结构不合理而错失机会。一个典型的反面案例是去年某服装品牌的直播团队——他们重金挖来了行业…

作者头像 李华
网站建设 2026/8/11 2:18:09

CSS炸弹攻击实战:HTML邮件无JS键盘记录器漏洞复现与防御

摘要 Black‑Hat USA 2026公开的CSS炸弹攻击&#xff0c;不依赖JavaScript&#xff0c;仅通过HTMLCSS突破网页邮箱的邮件隔离边界&#xff0c;打开恶意邮件即可完成键盘记录、账号密码与会话令牌窃取。传统垃圾邮件过滤、JS拦截、杀毒软件全部失效。本文从底层原理、攻击链路、…

作者头像 李华
网站建设 2026/8/11 2:17:53

DeepSeek模型集成指南:从API调用到本地部署的工程实践

在实际 AI 开发和应用中&#xff0c;将大语言模型&#xff08;LLM&#xff09;与本地开发环境或工具链深度集成&#xff0c;已经成为提升编码效率、辅助复杂任务解决的关键路径。近期&#xff0c;围绕 DeepSeek 模型的一系列讨论&#xff0c;特别是其与各类代码编辑器、IDE 插件…

作者头像 李华
网站建设 2026/8/11 2:16:57

BI工具堆砌如何降低决策效率?统一分析栈解决方案

1. 问题现象&#xff1a;BI工具越多&#xff0c;决策效率越低&#xff1f;最近和几位企业CIO交流时&#xff0c;听到一个有趣的现象&#xff1a;某零售企业先后部署了Tableau、Power BI和QuickBI三套系统&#xff0c;但管理层抱怨现在看数据比原来用Excel还慢。这让我想起五年前…

作者头像 李华
网站建设 2026/8/11 2:13:21

企业级船运物流管理系统架构与优化实践

1. 项目概述&#xff1a;企业级船运物流管理系统的技术架构这套船运物流管理系统采用当前主流的全栈技术架构&#xff0c;前端基于Vue.js构建响应式用户界面&#xff0c;后端采用SpringBoot框架提供RESTful API服务&#xff0c;数据持久层通过MyBatis实现与MySQL数据库的交互。…

作者头像 李华