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
命令参考
| 标志 | 说明 |
|---|
--preset | 使用预定义安全配置文件(strong、memorable、dev、pin、web、wifi、key) |
-i, --interactive | 启动交互菜单模式 |
--paranoid | 启用偏执模式(手动熵收集) |
--json | 以JSON格式输出 |
--show-entropy | 显示熵分析(启动器中默认启用) |
--check-strength | 运行zxcvbn模式分析 |
-c, --clipboard | 复制结果到剪贴板 |
--confirm-copy | 复制到剪贴板前提示确认 |
--clipboard-timeout | N秒后自动清除剪贴板(默认:30) |
--log | 将密码记录到历史(AES-128加密) |
--no-color | 禁用彩色输出 |
--easy-read | 排除易混淆字符(0/O、1/l/I) |
--easy-say | 仅包含可发音字符(无符号) |
生成器特定选项
随机(random, r)
| 标志 | 默认值 | 说明 |
|---|
-l, --length | 16 | 密码长度(4-1024) |
--no-uppercase | - | 排除大写字母 |
--no-lowercase | - | 排除小写字母 |
--no-digits | - | 排除数字 |
--no-symbols | - | 排除符号 |
--include | - | 包含的额外字符 |
--exclude | - | 排除的字符 |
--no-repeats | - | 字符不重复 |
--min-upper | 0 | 最少大写字符数 |
--min-lower | 0 | 最少小写字符数 |
--min-digits | 0 | 最少数字数 |
--min-symbols | 0 | 最少符号数 |
--balanced | - | 均衡比例(60/20/20) |
-n, --count | 1 | 生成数量 |
口令短语(phrase, p)
| 标志 | 默认值 | 说明 |
|---|
-w, --words | 4 | 单词数量(2-64) |
-s, --separator | - | 单词分隔符 |
--capitalize | - | 每个单词首字母大写 |
--uppercase | - | 所有单词大写 |
--alternate | - | 交替大小写(aLtErNaTe) |
--wordlist | - | 自定义词表路径 |
-n, --count | 1 | 生成数量 |
Leetspeak(leet, l)
| 标志 | 默认值 | 说明 |
|---|
-w, --words | 3 | 单词数量(2-64) |
-s, --separator | - | 单词分隔符( - _ . , ) |
-n, --count | 1 | 生成数量 |
PIN码(pin)
| 标志 | 默认值 | 说明 |
|---|
-l, --length | 6 | PIN码长度(4-64) |
-n, --count | 1 | 生成数量 |
可读音(pronounce, pr)
| 标志 | 默认值 | 说明 |
|---|
-l, --length | 12 | 密码长度(4-128) |
-n, --count | 1 | 生成数量 |
UUID(uuid)
| 标志 | 默认值 | 说明 |
|---|
--ver | 4 | UUID版本(1、4、7) |
--short | - | 短格式(Base58) |
--upper | - | 大写输出(仅十六进制) |
-n, --count | 1 | 生成数量 |
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)
| 标志 | 默认值 | 说明 |
|---|
-n, --count | 10 | 码的数量(5-20,默认:10) |
-l, --length | 10 | 码的长度(数字或单词,默认:10/3) |
--words | - | 使用基于单词的码 |
OTP密钥(otp)
| 标志 | 默认值 | 说明 |
|---|
--digits | 6 | 码长度(6或8) |
--period | 30 | 时间周期(秒) |
--qr | - | 在终端显示二维码 |
模式密码(pattern)