shakhsg/password-generator

GitHub: shakhsg/password-generator

一款使用 Python secrets 模块的密码学安全密码生成与强度分析 CLI 工具,支持熵值评分、策略验证和 passphrase 模式。

Stars: 0 | Forks: 0

# 🔐 Password Guardian [![Python 3.10+](https://img.shields.io/badge/Python-3.10%2B-blue?logo=python)](https://python.org) [![License: MIT](https://img.shields.io/badge/License-MIT-green)](LICENSE) [![Security: secrets](https://img.shields.io/badge/RNG-secrets%20CSPRNG-critical)](https://docs.python.org/3/library/secrets.html) ## ✨ 功能 | 功能 | 详情 | |---|---| | 🔒 **CSPRNG 生成** | 使用 Python 的 `secrets` 模块 — 基于操作系统级熵,而非 `random` | | 📊 **熵值评分** | 以比特为单位的香农熵,以及在 10¹² 次猜测/秒条件下的破解时间估算 | | ✅ **正则表达式验证** | 标准 / 强 / 极度偏执 / 企业级策略预设 | | 🎨 **丰富的终端 UI** | 具备强度计、图标和表格的全彩界面 | | 🔤 **Passphrase 模式** | 包含可配置分隔符且易于记忆的多个单词组成的 passphrase | | ⚙️ **高度可定制** | 长度、字符集、排除易混淆字符、安全符号、批量模式 | | 🏗️ **模块化设计** | `generator`、`checker`、`validator` — 可导入到你自己的项目中 | ## 📁 项目结构 ``` password-guardian/ ├── main.py CLI entry point + interactive UI ├── generator.py Secure password generation engine ├── checker.py Entropy + strength analysis ├── validator.py Regex-based policy enforcement ├── requirements.txt └── README.md ``` ## 🚀 快速开始 ``` # Clone git clone https://github.com/shakhsg/password-generator.git cd password-generator # Install (rich 可选,但能让输出更美观) pip install -r requirements.txt # 运行 interactive mode python main.py # 快速生成 24 字符密码 python main.py --generate -l 24 # 检查现有密码的强度 python main.py --check # 生成 10 个密码,包含 safe symbols,无 ambiguous chars python main.py --batch 10 -l 20 --safe-symbols --no-ambiguous # 生成 5 词 passphrase python main.py --passphrase -w 5 ``` ## 🧠 工作原理 ### 熵值计算 ``` H = L × log₂(N) H = entropy in bits L = password length N = charset size (26 upper + 26 lower + 10 digits + 32 symbols = 94 max) ``` | 熵值 | 强度 | 破解时间 (10¹² /秒) | |---|---|---| | < 36 bits | 弱 | 几秒到几分钟 | | 36–60 bits | 一般 | 几小时到几个月 | | 60–80 bits | 强 | 几年到几个世纪 | | 80–100 bits | 非常强 | 数百万年 | | 100+ bits | 传说级 | 数十亿年 | ### 强度扣分项 - 常见密码(内置的最常用密码黑名单) - 重复字符(`aaa`、`111`) - 连续模式(`123`、`abc`、`qwerty`) - 键盘路径(`qazwsx`、`asdfgh`) - 年份模式(`1999`、`2024`) ### 安全生成机制 在通过 `secrets.choice()` 提取的字符基础上,使用**加密安全的 Fisher-Yates 洗牌算法**: 1. 从每个字符类别中选取所需的最少字符(`min_upper`、`min_lower`、`min_digit`、`min_symbol`) 2. 使用完整字符集中的随机字符填充剩余空位 3. 安全地打乱合并后的列表 4. 结果:每种排列出现的概率均等 ## 🔧 作为库使用 ``` from generator import PasswordGenerator, GeneratorConfig from checker import StrengthChecker from validator import PasswordPolicy # Generate gen = PasswordGenerator() result = gen.generate(GeneratorConfig(length=20, use_safe_symbols=True)) print(result.password) # e.g. Xk#9mP!vQn@2rLwY#8dT print(result.entropy_bits) # e.g. 131.1 # Check checker = StrengthChecker() report = checker.check(result.password) print(report.label) # Very Strong print(report.crack_time_label)# Millions of years # Validate policy = PasswordPolicy.from_preset("enterprise") result = policy.validate(result.password) print(result.passed) # True / False print(result.violations) # List of failed rules ``` ## 📋 CLI 参考 ``` python main.py [OPTIONS] Options: --generate Quick generate mode --check Check an existing password's strength --passphrase Generate a passphrase --batch N Generate N passwords at once -l, --length N Password length (default: 16) --no-symbols Exclude all symbols --safe-symbols Use safe symbols only (!@#$%^&*-_=+) --no-ambiguous Exclude O, 0, I, l, 1 -w, --words N Number of words in passphrase (default: 4) ``` ## 🔒 安全说明 - **绝不**使用 Python 的 `random` 模块 — 专门且仅使用 `secrets` - 密码绝对不会被记录、存储或传输 - 最低熵值目标:针对敏感账户为 **80 bits**(非常强) - Passphrase 熵值:约 6.4 bits/单词 × 4 个单词 ≈ 25.5 bits(用于敏感机密时建议使用 6 个及以上单词) ## 📜 许可证 MIT © 2024 [shakhsg](https://github.com/shakhsg) — 可自由使用、修改和分发。
标签:Python, 密码学, 密码强度检测, 密码生成器, 手动系统调用, 无后门, 逆向工具