JuttSahib1999/password-strength-evaluator
GitHub: JuttSahib1999/password-strength-evaluator
一款零依赖、纯客户端运行的密码强度分析器,基于香农熵、OWASP A07合规检查与GPU破解时间估算来评估并生成安全密码。
Stars: 0 | Forks: 0
# 🔐 密码强度评估器





## 📌 概述
**密码强度评估器** 是一款完全基于浏览器的安全工具,它使用以下方式实时分析密码质量:
- 基于真实字符库大小计算 **香农熵**( bits )
- **OWASP A07:2021** (身份验证失效) 合规性检查
- **模式检测** — 键盘路径、序列、重复、 leet-speak 替换
- **泄露列表匹配** — 标记在已知常见/泄露密码数据库中发现的密码
- **离线 GPU 破解时间估算** — 以每秒 1 万亿次猜测为模型
- **超强密码生成器** — 通过 `crypto.getRandomValues()` 进行加密随机生成
所有分析 100% 在客户端进行。没有 API 调用。没有服务器。没有遥测。
## ✨ 功能
| 功能 | 描述 |
|---|---|
| 🔢 熵分析 | 使用真实的字符集大小计算以 bit 为单位的香农熵 |
| 🛡️ OWASP A07 检查 | 针对身份验证安全指南的 8 项检查清单 |
| 🎨 可视化强度计 | 5 段颜色编码的强度指示器 |
| ⚠️ 安全标记 | 针对模式、泄露和结构的上下文警告 |
| 💡 改进建议 | 根据检测到的弱点提供量身定制的、可操作的建议 |
| ⏱️ 破解时间估算 | GPU 速度的离线攻击时间估算 |
| 🎲 密码生成器 | 加密安全的 20 字符随机密码生成器 |
| 📋 一键复制 | 将生成的密码直接复制到剪贴板 |
| 👁️ 显示/隐藏切换 | 显示或隐藏输入的密码 |
| 🌙 支持暗黑模式 | 完全支持系统暗黑/浅色模式偏好 |
## 🖥️ 演示
## 🚀 快速开始
### 前置条件
无。这是一个纯 HTML/CSS/JS 项目。您只需要一个现代的 Web 浏览器。
### 安装
#### 选项 1 — 克隆仓库
```
git clone https://github.com/JuttSahib1999/password-strength-evaluator.git
cd password-strength-evaluator
```
然后直接在浏览器中打开 `index.html`:
```
# macOS
open index.html
# Linux
xdg-open index.html
# Windows (PowerShell)
start index.html
```
#### 选项 2 — 下载 ZIP
1. 点击仓库页面上的绿色 **Code** 按钮
2. 选择 **Download ZIP**
3. 解压压缩包
4. 在浏览器中打开 `index.html`
#### 选项 3 — GitHub Pages (实时托管)
免费自行托管:
1. Fork 此仓库
2. 进入您的 fork 仓库 → **Settings** → **Pages**
3. 在 **Source** 下,选择 `main` 分支 → `/ (root)`
4. 点击 **Save**
5. 您的工具将上线于 `https://.github.io/password-strength-evaluator/`
## 📁 项目结构
```
password-strength-evaluator/
│
├── index.html # Single-file application (HTML + CSS + JS)
└── README.md # Project documentation
```
这是有意为之的单文件构建 — 易于在任何地方分享、嵌入或托管。
## 🔬 工作原理
### 熵计算
熵的计算公式为:
```
Entropy (bits) = Password Length × log₂(Charset Size)
```
其中字符集大小由存在的字符类别决定:
| 类别 | 字符 | 字符库大小 |
|---|---|---|
| 小写字母 | a–z | +26 |
| 大写字母 | A–Z | +26 |
| 数字 | 0–9 | +10 |
| 符号 | !@#$%^&*… | +32 |
### 强度评分
| 熵范围 | 基础分数 | 等级 |
|---|---|---|
| < 36 bits | 0 | 非常弱 |
| 36–51 bits | 1 | 弱 |
| 52–69 bits | 2 | 一般 |
| 70–89 bits | 3 | 强 |
| ≥ 90 bits | 4 | 非常强 |
分数会因以下因素被**扣分**:常见密码、全数字输入、键盘路径和重复模式。
### OWASP A07 合规性
该工具根据用于身份验证的 [OWASP 应用程序安全验证标准 (ASVS)](https://owasp.org/www-project-application-security-verification-standard/) 标准进行检查:
- ✅ 至少 8 个字符
- ✅ 建议 12+ 个字符
- ✅ 包含大写字母
- ✅ 包含小写字母
- ✅ 包含数字
- ✅ 包含特殊/符号字符
- ✅ 未在常见/泄露密码列表中找到
- ✅ 没有键盘路径或顺序模式
### 密码生成器
生成器使用 Web Crypto API ( `crypto.getRandomValues()` ) — 一个加密安全的伪随机数生成器 ( CSPRNG ):
- 保证包含:2 个大写字母、2 个小写字母、2 个数字、2 个符号
- 剩余的 12 个字符从完整的 74 个字符集中随机抽取
- 应用 Fisher-Yates 洗牌算法以实现均匀分布
- 排除视觉上容易混淆的字符 ( `0`, `O`, `1`, `l`, `I` )
## 🔒 隐私与安全
- ✅ **零网络请求** — 永远不会传输任何密码
- ✅ **无 localStorage / sessionStorage** — 不保留任何内容
- ✅ **无外部脚本** — 完全通过单个 HTML 文件运行
- ✅ **无分析或追踪**
- ✅ **开源** — 您可以自己审计每一行代码
## 🧠 技术参考
| 组件 | 规格 |
|---|---|
| 破解时间模型 | 离线 GPU 攻击,10¹² 次猜测/秒 |
| 泄露列表大小 | 约 50 个最常见密码 + leet-speak 变体 |
| 生成器字符集 | 74 个字符 (大写字母、小写字母、数字、符号) |
| 生成器长度 | 20 个字符 (≈ 126 bits 熵) |
| CSPRNG | Web Crypto API — `crypto.getRandomValues()` |
## 🐛 报告问题
发现错误或有建议?请在 [Issues 页面](https://github.com/JuttSahib1999/password-strength-evaluator/issues) 提交一个 issue,并包含:
- 清晰的标题
- 复现步骤
- 浏览器和操作系统版本
- 预期与实际的行为对比
## 📜 许可证
该项目基于 **MIT 许可证** 授权 — 可免费用于个人或商业目的的使用、修改和分发。
```
MIT License
Copyright (c) 2026 Abdul Muqeet Tabraiz (JuttSahib1999)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
## 👨💻 作者
**Abdul Muqeet Tabraiz**
- GitHub: [@JuttSahib1999](https://github.com/JuttSahib1999)
- LinkedIn: [Abdul Muqeet Tabraiz](https://www.linkedin.com/in/abdul-muqeet-tabraiz)
- 认证: CEH | CHFI | Blue Team Specialist
## ⭐ 显示您的支持
如果此工具帮助了您或您觉得它很有用,请考虑在仓库中留下一个 **star** ⭐ — 这有助于其他人发现该项目,并激励持续开发。
*秉持安全理念构建。已通过 OWASP A07:2021 指南测试。*
标签:CMS安全, JavaScript, OWASP标准, 后端开发, 密码安全, 密码生成器, 数据可视化