PassForge:我构建了一个 Password Workstation,因为一个 Slider 还不够

发布: (2026年4月5日 GMT+8 02:13)
11 分钟阅读
原文: Dev.to

Source: Dev.to

上周我在设置一台新服务器,需要为不同的服务准备十二个唯一的密码。我打开了三个标签页——LastPass 的生成器、Bitwarden 的生成器以及 1Password 的在线工具。每一个都只提供了极简的界面:一个长度滑块、几个复选框,以及一个输出。复制、切换标签页、粘贴,重复。十二次。

于是我决定打造 PassForge —— 一个密码工作站,所有功能集中在同一个地方:随机密码、易记的密码短语、强度测试以及批量生成。全部在浏览器中运行,数据不离开你的机器。

什么让 PassForge 与众不同

大多数密码生成器只解决一个狭窄的问题:它们输出一个随机字符串。PassForge 将密码视为一个包含四种不同模式的工作流。

密码生成器

处理经典用例——可细粒度控制的随机字符字符串。

  • 长度:4 – 128 个字符
  • 切换字符集(大写字母、小写字母、数字、符号)
  • 可选排除模糊字符(O/0、l/1/I)

每个生成的密码都来自 crypto.getRandomValues(),而不是 Math.random(),因此你得到的是实际的密码学随机性。

口令生成器

不使用随机字符,而是从精心挑选的 1,296 词词典(基于 EFF 短词表)中构建多词短语。

  • 示例:一个 5 词口令如 Bold‑Crane‑Melt‑Surf‑Knot 大约拥有 52 比特熵——相当于一个随机的 10 字符密码——但你真的可以记住它。
  • 选择分隔符样式(破折号、点、下划线、空格)
  • 单词首字母大写
  • 可选在末尾追加数字或符号,以满足对安全要求严格的站点

强度测试器

粘贴任意已有密码,获得诚实的评估。

  • 计算熵并估算在每秒 100 亿次尝试的 GPU 集群下的破解时间
  • 进行模式分析,检测重复字符、顺序序列以及字符多样性
  • 可见性切换默认隐藏密码,防止肩膀偷窥者查看

批量生成器

解决原始问题——一次生成大量密码。

  • 滑块:2 – 50 个密码
  • 在随机密码和口令之间选择
  • 点击任意行即可复制,或点击 Copy All 将整批(换行分隔)复制到剪贴板

Source:

实际工作原理

整个应用只有一个 HTML 文件——总共 40 KB,零外部依赖。没有框架,没有 CDN 请求,没有分析像素。打开时,首次渲染在 100 ms 以下,因为无需加载任何资源。

加密随机性

PassForge 中的每个随机值都来自 Web Crypto APIcryptoRandInt(max) 函数创建一个 Uint32Array,用加密级随机字节填充,然后取模。对字符集合进行洗牌(确保字符集分布均匀)时,我使用了 Fisher‑Yates 算法,并以加密随机索引为依据。

function cryptoRandInt(max) {
  const arr = new Uint32Array(1);
  crypto.getRandomValues(arr);
  return arr[0] % max;
}

密码生成器保证每个激活的字符集至少出现一次,然后从合并后的字符池中填充剩余长度,最后对整个结果进行洗牌。这可以避免弱生成器常出现的 “前 4 个字符总是各字符集各一个” 的模式。

熵计算

  • 随机密码: entropy = length × log₂(poolSize)
    poolSize 由密码中出现的字符类别决定。

  • 密码短语: entropy = wordCount × log₂(dictionarySize)
    使用我们的 1,296‑词列表时,每个单词约贡献 10.34 比特

破解时间估算基于高端攻击者:每秒 100 亿次猜测(多 GPU 机器运行 Hashcat 对 MD5 等快速哈希的速度)。对 bcrypt 或 Argon2 实际破解时间会长很多数量级。我采用这种激进估算是因为你的密码即使在最坏情况下也应足够强。

强度测试器的模式分析

除了原始熵值,测试器还会检查真实的弱点:

检查项捕获的情况
重复字符“aaa”、 “111” 等连续重复
顺序字符键盘走位如 “abc”、 “123”、 “qwerty”
字符多样性唯一字符占总长度的比例;低于 50 % 为红色警告
缺失字符类别当缺少大写字母、小写字母、数字或符号时标记

每项检查都会给出明确的通过/未通过结果,并提供具体的改进建议,而不是仅仅给出 “需要更强” 的模糊提示。

我坚持的设计决策

  • 暗模式自动切换。 PassForge 读取 prefers-color-scheme 并在没有切换按钮的情况下切换主题。如果你的操作系统设置为暗色模式,你就会看到暗色主题。没有 cookie 横幅,也没有偏好对话框。
  • 所有输出均可一键复制。 点击密码框、批量列表行或助记词——它们都会复制到剪贴板,并在 2 秒内显示提示确认。无需寻找单独的复制按钮。
  • 触控目标最小为 44 px。 每个交互元素——标签页、复选框、滑块、按钮——都符合 Apple 人机界面指南中对最小触控目标尺寸的要求。这在咖啡店里用手机生成密码时尤为重要。
  • 键盘导航全程可用。 在标签页中使用方向键切换。复选框响应 SpaceEnterCtrl + G 可在任何标签页生成新密码。焦点状态可见。
  • 可作为 PWA 安装。 PassForge 包含服务工作线程和 Web Manifest,您可以在移动设备上“添加到主屏幕”或将其安装为桌面应用。首次加载后即可离线使用——密码生成器不应依赖网络连接。

实际使用每种模式的情形

  • Password mode – 数据库凭证、API 密钥或任何需要传统随机字符串的服务。
  • Passphrase mode – 用于个人账户的记忆密码,需要能够凭记忆输入且仍然安全的密码。
  • Strength tester – 审计现有密码或在将新创建的密码投入使用前评估其强度。
  • Bulk generator – 为多个账户配置、创建特定服务的密码,或为团队生成一组一次性密码。

试用 PassForge,体验当所有需求都集中在一个离线优先的网页中时,密码管理会变得多么顺畅。

模式

随机模式 – 为 API 密钥、服务账户以及机器读取的任何内容生成密码。

  • 完整长度,包含所有字符集,排除易混淆字符。

短语模式 – 您的主电子邮件、密码管理器主密码、全盘加密。

  • 任何需要手动输入并记住的内容。

强度测试器 – 审计现有密码。

  • 粘贴您当前的银行密码,看看它是否真的像您想象的那样强。

批量模式 – 配置新基础设施、创建测试账户、在各服务之间轮换凭证。

隐私是结构性的,而非承诺的

PassForge 没有分析功能。加载后它不会发起网络请求。没有可被攻击的服务器端组件,没有可被入侵的数据库,也没有可被传唤的日志。

在使用时打开浏览器的 Network(网络)标签页——你会看到恰好 个请求。你的密码仅存在于浏览器的内存中,别无他处。

这并非为了好听而写的隐私政策。这是架构的自然结果:单个 HTML 文件,没有后端,也没有外部脚本。

试用

PassForge 是免费且现在即可使用的。

如果你每天都在处理密码——系统管理员、开发者、IT 支持——请将其加入书签。它被设计成你会一直打开的唯一密码工具。

相关工具

  • HashForge – 在浏览器中生成和验证 MD5/SHA/HMAC 哈希。
  • DiffLab – 在不上传任何内容的情况下比较文本差异。
  • RegexLab – 使用多案例运行器测试正则表达式模式。
0 浏览
Back to Blog

相关文章

阅读更多 »