PassForge - 全功能密码生成器 CLI
一个生产就绪、密码学安全的密码生成器命令行工具,提供17种生成模式、熵透明度和全面的自定义选项。



功能特性
17种生成模式
| 生成器 | 命令 | 说明 |
|---|
| 随机 | random, r | 密码学安全的随机字符密码 |
| 口令短语 | phrase, p | 基于单词的口令短语(使用EFF词表) |
| Leetspeak | leet, l | 字符替换的口令短语(A→4,E→3等) |
| PIN码 | pin | 可配置长度的数字PIN码 |
| 可读音 | pronounce, pr | 易于发音的基于音节的密码 |
| UUID | uuid, u | RFC 4122/9562 UUID(v1、v4、v7)及短UUID(Base58) |
| Base64 | base64, b64 | URL安全的Base64编码密钥 |
| JWT密钥 | jwt | 用于JWT签名的高熵密钥(HS256/384/512) |
| WiFi密钥 | wifi | WPA2/WPA3兼容的密钥(8-63字符) |
| 许可证密钥 | license | 软件许可证密钥(AXB格式,如5x5) |
| 恢复码 | recovery | 双因素认证备份码(数字或基于单词) |
| OTP码/密钥 | otp | TOTP/HOTP码及密钥(含otpauth URI) |
| 模式密码 | pattern | 基于可视网格的模式密码 |
| 主题短语 | phrase(自定义) | 来自主题词表的口令短语(动物、科幻等) |
| 北约音标 | phonetic, ph | 将文本/密码转换为北约字母(Alpha-Bravo) |
| 分析 | analyze, check | 分析现有密码的强度 |
| 历史 | history | 查看密码生成历史(默认显示10条) |
- 预设配置文件:针对常见用例(强密码、易记、开发者等)一键生成
- 交互式菜单:功能完善的菜单,引导式生成
- 平台启动器:带交互式菜单的专用
.bat 和 .sh 脚本
- 密码学安全:使用 Python 的
secrets 模块实现 CSPRNG
- 熵透明度:实时熵计算与强度分析
- zxcvbn 分析:基于模式的密码强度检查(字典攻击、序列等)
- 安全剪贴板:可配置超时后自动清除剪贴板
- 实时 OTP 码:生成当前6/8位 TOTP 码并同时显示密钥
- OTP 二维码:可扫描的二维码,用于认证器应用
- 彩色输出:字符类型视觉区分
- JSON 导出:机器可读输出,便于脚本使用
- 均衡模式:确保可读分布(60%字母、20%数字、20%符号)
- 生成器指南:所有14种生成器类型的全面文档
- 加密历史(保险库):使用 AES-128(Fernet)自动加密保存的密码
- 安全保险库存储:专用保险库通过
.env(推荐)或遗留的 .vault.key 处理加密密钥,并采用严格的 0600 文件权限
- 零泄漏架构:🛡️ PWA 模式下阻止浏览器访问源代码和日志;CLI 模式下敏感输入在熵分析时被掩码
- 脱敏导出:安全优先的历史记录导出,默认自动隐藏密码
- 零缩进 UI:所有模式输出干净、专业的左对齐格式
- 智能 Leetspeak:概率替换,生成更自然、可读的密码
- 强健验证:交互式提示,带默认值和递归错误处理
- 防御性 PWA 前端:🛡️ 内置 CDN 资源安全检查,防止初始化崩溃
- 全局修饰符:
--easy-read 和 --easy-say 模式
安装
# 克隆仓库
git clone https://github.com/krishnakanthb13/password_generator.git
cd password_generator
# 安装依赖(colorama、cryptography、pyperclip 等)
pip install -r requirements.txt
快速入门
# 生成一个20字符的随机密码
python main.py random -l 20
# 生成一个4单词的口令短语
python main.py phrase -w 4 --capitalize
# 生成一个Leetspeak口令短语
python main.py leet -w 3 -s _
# 生成并显示熵分析
python main.py --show-entropy random -l 16
# 启动交互模式
python main.py --interactive
# 使用预设配置文件(强密码)
python main.py --preset strong --show-entropy
使用示例
随机密码
# 基础16字符密码
python main.py random
# 24字符,仅字母
python main.py random -l 24 --no-symbols --no-digits
# 易于阅读(无0/O、1/l/I)
python main.py --easy-read random -l 20
# 带最低要求
python main.py random -l 16 --min-upper 2 --min-digits 2 --min-symbols 1
# 均衡模式(字母为主,符号较少)
python main.py random -l 24 --balanced
口令短语
# 标准4单词口令短语
python main.py phrase -w 4
# 带大写和下划线分隔符
python main.py phrase -w 5 -s _ --capitalize
# 交替大小写(高熵)
python main.py phrase -w 4 -s . --alternate
# 输出:aPpLe.bAnAnA.cHeRrY.dAtE
# 全大写加连字符分隔符(高熵)
python main.py phrase -w 4 -s . --uppercase
# 输出:APPLE-BANANA-CHERRY-DATE
# Leetspeak版本(智能50%替换)
python main.py leet -w 4 -s -
# 输出:4PPl3.8@N@[email protected]
# 主题口令短语(使用'animals.txt')
python main.py phrase -w 4 --capitalize --wordlist data/wordlists/animals.txt
# 输出:Tiger-Falcon-Shark-Wolf
软件密钥(A x B 格式)
# 5个段,每段5个字符
python main.py license --segments 5 --segment-length 5
# 4个段,每段8个字符
python main.py license --segments 4 --segment-length 8
开发者令牌
# HS256 的 JWT 密钥
python main.py jwt --bits 256
# Base64 API 密钥
python main.py base64 -b 32 --url-safe
# UUID 令牌(v4 随机)
python main.py uuid --upper
# UUID v7(基于时间,可排序)
python main.py uuid --ver 7
# 或使用快捷方式
python main.py uuid --v7
# 短 UUID(Base58 编码,约22字符)
python main.py uuid --short
# 使用快捷方式生成 v7 UUID
python main.py u --v7
# 生成10个短 v4 UUID
python main.py uuid --v4 --short -n 10
# 北约音标转换
python main.py phonetic --text "PassForge"
# 输出:Papa-Alpha-Sierra-Sierra-Foxtrot-Oscar-Romeo-Golf-Echo
安全与日志
# 分析现有密码
python main.py analyze "p@ssword123"
# 记录到历史
python main.py --log random -l 16
# 查看最近10条历史记录(默认)
python main.py history
# 查看所有历史记录(实时解密)
python main.py history --all
# 查看历史记录,密码脱敏
python main.py history --redact
# 导出历史记录(默认脱敏)
python main.py history --export backup.json
# 导出历史记录(明文 - 需谨慎)
python main.py history --export secrets.csv --no-redact
# JSON 输出供脚本使用
python main.py --json jwt --bits 256
命令参考
生成器特定选项
随机(random, r)
口令短语(phrase, p)
Leetspeak(leet, l)
PIN码(pin)
| 标志 | 默认值 | 说明 |
|---|
-l, --length | 6 | PIN码长度(4-64) |
-n, --count | 1 | 生成数量 |
可读音(pronounce, pr)
| 标志 | 默认值 | 说明 |
|---|
-l, --length | 12 | 密码长度(4-128) |
-n, --count | 1 | 生成数量 |
UUID(uuid)
Base64(base64, b64)
| 标志 | 默认值 | 说明 |
|---|
-b, --bytes | 32 | 随机字节数 |
--url-safe | - | 使用URL安全字符 |
JWT密钥(jwt)
| 标志 | 默认值 | 说明 |
|---|
--bits | 256 | 比特长度(256、384、512) |
--hex | - | 以十六进制字符串输出 |
WiFi密钥(wifi)
| 标志 | 默认值 | 说明 |
|---|
-l, --length | 24 | 密钥长度(8-63,默认:24) |
--simple | - | 仅字母数字(无符号) |
许可证密钥(license)
| 标志 | 默认值 | 说明 |
|---|
--segments | 4 | 段数(2-64) |
--segment-length | 4 | 每段字符数(2-32) |
恢复码(recovery)
OTP密钥(otp)
| 标志 | 默认值 | 说明 |
|---|
--digits | 6 | 码长度(6或8) |
--period | 30 | 时间周期(秒) |
模式密码(pattern)
| 标志 | 默认值 | 说明 |
|---|
--grid | 3 | 网格大小(例如3x3) |
音标(phonetic, ph)
| 标志 | 默认值 | 说明 |
|---|
--text | - | 要转换为北约字母表的文本 |
-l, --length | 8 | 随机序列长度(4-64) |
历史(history)
熵指南
PassForge提供全面的熵报告,包括原始字符池大小、香农熵以及暴力破解时间估算。
注意: 关于每种生成器类型的详细说明,请参见 LITERATURE.md。
项目结构
password_generator/
├── main.py # 入口点
├── requirements.txt # 依赖列表
├── src/
│ ├── __init__.py
│ ├── cli.py # 参数解析器与横幅
│ ├── command_handler.py # 命令路由
│ ├── interactive.py # 交互菜单
│ ├── generators/ # 所有密码生成器
│ │ ├── base.py # 抽象基类
│ │ ├── random_password.py # 随机密码生成器
│ │ ├── passphrase.py # 口令短语生成器
│ │ ├── leetspeak.py # Leetspeak生成器
│ │ ├── pin.py # PIN码生成器
│ │ ├── pronounceable.py # 可读音密码生成器
│ │ ├── uuid_token.py # UUID令牌生成器
│ │ ├── base64_secret.py # Base64密钥生成器
│ │ ├── jwt_secret.py # JWT密钥生成器
│ │ ├── wifi_key.py # WiFi密钥生成器
│ │ ├── license_key.py # 许可证密钥生成器
│ │ ├── recovery_codes.py # 恢复码生成器
│ │ ├── otp.py # OTP生成器
│ │ ├── pattern.py # 模式密码生成器
│ │ └── phonetic.py # 北约音标生成器
│ ├── security/
│ │ ├── entropy.py # 熵计算器
│ │ ├── strength_checker.py # zxcvbn集成
│ │ └── vault.py # 安全历史加密
│ ├── output/
│ │ ├── formatter.py # 彩色输出
│ │ ├── logger.py # 历史记录日志
│ │ ├── clipboard.py # 安全剪贴板处理
│ │ └── qrcode_gen.py # OTP二维码生成
│ ├── config/
│ │ ├── loader.py # YAML/JSON配置加载器
│ │ └── presets.py # 预定义安全配置文件
├── data/
│ └── wordlists/ # 主题词表(animals.txt、biology.txt等)
└── tests/
测试
# 运行所有测试
python -m pytest tests/ -v
# 运行特定测试类
python -m pytest tests/test_generators.py::TestRandomPasswordGenerator -v
# 运行覆盖率测试
python -m pytest tests/ --cov=src --cov-report=html
所有53个单元测试覆盖:
- 所有15种专用生成器模式
- 熵和zxcvbn强度计算器
- 剪贴板自动清除和安全存储
- 二维码ASCII生成逻辑
- 配置加载和预设
配置
PassForge支持YAML或JSON格式的配置文件。
配置文件位置(按顺序搜索):
./passforge.yaml 或 ./passforge.json
./.passforge.yaml 或 ./.passforge.json
~/.passforge/config.yaml 或 ~/.passforge/config.json
配置示例
{
"random": {
"length": 20,
"easy_read": true
},
"passphrase": {
"words": 5,
"capitalize": true
},
"output": {
"show_entropy": true
}
}
所有可用选项请参见 passforge.example.json。
构建独立可执行文件
PassForge可以使用PyInstaller编译为单个独立可执行文件。
Windows
# 使用构建脚本
passforge_build.bat
# 或手动
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
Linux/macOS
# 使用构建脚本
chmod +x passforge_build.sh
./passforge_build.sh
# 或手动
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
可执行文件将创建在 dist/ 文件夹中(约7MB,零依赖)。
🌐 PassForge Web(PWA附加组件)
PassForge现在包含一个现代化、响应式的Web界面(PWA),提供可视化的密码生成和管理方式,同时保持与CLI版本完全对等的功能。
主要特性
- 侧边栏界面:在所有生成器类型间轻松导航。
- 可视滑块:通过交互式滑块调整长度和单词数量。
- 二维码支持:即时生成二维码,用于共享密码或OTP密钥。
- 深色/浅色模式:高级美感,支持系统感知主题切换。
- 可安装:支持在Windows、Linux和移动设备上安装PWA。
- 共享历史:使用与CLI相同的加密日志文件。
启动PWA
要启动Web界面,请运行适用于您操作系统的启动脚本:
- Windows:
passforge_pwa.bat
- Linux/macOS:
passforge_pwa.sh
[!IMPORTANT]
安全加固(v34+):PWA现在使用 SecureStaticFiles 处理器,明确阻止浏览器访问Python源文件、日志和加密密钥。历史记录访问通过内部API密钥握手保护。前端逻辑还包含对外部CDN资产的防御性包装,以确保即使CDN被屏蔽也能正常运行。
[!TIP]
构建可用性:PWA文件包含在源代码和ZIP/Tarball发行版中。PWA未嵌入单文件 .exe 二进制文件中。
启动器将自动安装必要的依赖(fastapi、uvicorn),在 http://127.0.0.1:8093 启动本地服务器,并打开浏览器。
许可证
GPL v3 许可证 - 详见 LICENSE 文件。
贡献
欢迎贡献!请在提交PR前阅读我们的贡献指南。