使用 Python GUI 工具创建安全的密码短语
在数字安全至关重要的今天,强密码是保护我们在线生活的第一道防线。但谁说安全的密码就不能既好记又有趣呢?我开发了一款基于 Python 和 wxPython 的 密码短语生成器,可以生成 Diceware 风格的随机单词短语以及充满奇思妙想的记忆性句子。无论你需要为账户设置一个强大的密码,还是需要一个易于记忆的短语作为加密密钥,这款工具都能满足你的需求。让我们来了解它的功能、使用方法以及为什么值得一试!
C:\pythoncode\new\passwordgenerator.py
密码短语生成器是什么?
这款工具是一个使用 wxPython 构建的图形用户界面(GUI)应用程序,提供两种生成模式:
- Diceware 模式:生成由随机单词组成的密码短语,类似经典的 Diceware 方法,适合创建高熵的密码。
- 句子模式:生成带有荒诞意象的记忆性句子,通过结合随机单词、动词、连接词和场景,创建既有趣又安全的短语。
工具使用 Python 的 secrets
模块确保加密级别的随机性,并支持加载外部单词表以增强安全性。界面直观,分为两个选项卡,分别对应两种模式,让用户可以轻松调整参数并生成结果。
主要功能
- 加密级随机性:使用
secrets.SystemRandom
确保生成的密码短语具有高随机性,适合安全敏感的应用。 - Diceware 模式:
- 支持自定义单词数量、分隔符、最小长度和首字母大写选项。
- 显示每组短语的熵估计(以位为单位),帮助用户了解密码强度。
- 支持加载外部单词表(UTF-8 编码,每行一个单词)。
- 句子模式:
- 生成荒诞而有趣的句子,如“鲸鱼抱着气球在沙滩上一起跳舞42#”。
- 支持用户输入提示词以个性化句子。
- 确保句子长度达到指定最小值,并随机插入数字和符号以增强复杂度。
- 图形界面:基于 wxPython 的选项卡界面,包含输入字段、生成按钮和只读文本区域,用于显示生成的短语或句子。
- 错误处理:通过弹出窗口提示文件加载失败或无效输入等问题。
如何使用
准备工作
- 安装 wxPython:
在 Python 环境中运行以下命令安装 wxPython:pip install wxPython
- 保存代码:
将提供的代码保存为passphrase_gui.py
(代码链接:见文末)。确保 Python 3 环境可用。 - 可选:准备单词表:
默认使用内置的 50 个中文单词表(仅用于演示)。为提高安全性,建议准备一个包含数千个单词的 UTF-8 编码文本文件,每行一个单词。
运行程序
运行以下命令启动 GUI:
python passphrase_gui.py
程序将打开一个窗口,包含两个选项卡:“Diceware”和“句子”。
Diceware 模式
- 切换到“Diceware”选项卡。
- 设置参数:
- 单词数量:选择短语包含的单词数(默认 5)。
- 分隔符:输入单词间的分隔符(默认“-”)。
- 单词表路径:输入外部单词表文件的路径(可选,留空使用默认单词表)。
- 最小长度:设置短语的最小字符长度(默认 0)。
- 首字母大写:勾选以使每个单词首字母大写。
- 短语数量:选择要生成的短语数(默认 5)。
- 点击“生成密码短语”按钮。
- 结果将显示在下方文本区域,包括每组短语和熵估计。例如:
鲸鱼-仙人掌-电梯-彩虹-风筝 彗星-沙漏-灯塔-纸鹤-帐篷 ... 估计每组短语熵 ≈ 51.7 位(假设 50 个单词)
句子模式
- 切换到“句子”选项卡。
- 设置参数:
- 提示词:输入空格分隔的单词(如“鲸鱼 仙人掌”),用于个性化句子(可选)。
- 最小长度:设置句子的最小字符长度(默认 20)。
- 句子数量:选择要生成的句子数(默认 5)。
- 点击“生成句子”按钮。
- 结果将显示在下方文本区域,例如:
鲸鱼抱着气球沿着彩虹在沙滩上一起跳舞42# 仙人掌背着风筝绕过帐篷在桥上一起吹泡泡19@ ...
安全提示
- 使用大单词表:内置的 50 个单词表仅用于演示,熵较低(约 51.7 位,5 个单词)。建议使用包含数千个单词的外部单词表(如 EFF 的 Diceware 单词表),以显著提高熵。
- 检查环境变量:设置
DICEWARE_STRICT=1
环境变量以强制要求大单词表,否则程序会警告小单词表的安全风险。 - 保护输出:生成的密码短语应妥善保存,避免泄露。