Glyph WidgetsGlyph Widgets
工具关于联系博客隐私条款移除广告在Ko-fi上支持

© 2026 Glyph Widgets LLC. 保留所有权利。

·

100% 客户端处理

返回博客

密码生成器|安全随机密码

使用 Web Crypto API 实现密码学安全随机性的密码生成器。可自定义长度 8–126 字符、字符集和熵值。

Glyph Widgets
2026年2月27日
阅读 10 分钟
密码生成器安全密码随机密码强密码在线密码生成

什么是密码生成器?

密码生成器使用 Web Crypto API(crypto.getRandomValues)创建强大的、密码学安全的密码——这与您的操作系统用于安全关键操作的随机源相同。这不是伪随机:每个字符从根据所选字符集大小确定的池中提取,使用 rejection sampling 消除模偏差。

当您需要测试账户、API 密钥、本地 secret、种子数据的密码,或任何可预测或弱密码会构成安全风险的场景时,请使用此工具。工具一次可生成最多 100 个密码,显示每个密码的熵估计值,并直接复制到剪贴板。一切在浏览器中运行:没有密码被记录或传输。

主要功能

  • 密码学安全随机性 — 使用 crypto.getRandomValues 配合 rejection sampling(getUnbiasedRandomIndex)消除模偏差,解决字符集大小不是二的幂时简单实现所面临的问题。
  • 可自定义长度(8–126 字符) — 通过范围滑块和数字输入字段设置。输入字段自动限制在 8–128 范围内。
  • 四个字符集 — 大写字母(A–Z,26 个)、小写字母(a–z,26 个)、数字(0–9,10 个)和符号(!@#$%^&*()_+-=[]{}|;:,.<>?,26 个)。至少一个必须保持激活。工具防止取消选择最后一个激活的集合。
  • 排除易混淆字符 — 从池中移除 O、0、I、l 和 1,这些字符在许多字体中看起来相似。组件将其定义为 'O0Il1'(5 个字符)。
  • 熵值显示 — 调整选项时实时显示总熵(位)、字符集大小和每字符位数。公式为 长度 × log2(字符集大小)。
  • 七个强度级别 — 弱(< 40 位)、一般(40–49)、好(50–59)、强(60–79)、非常强(80–99)、堡垒(100–149)和荒谬(150+ 位)。每个级别有独特的颜色指示器。
  • 批量生成(最多 100 个) — 范围滑块控制每次点击生成的数量。默认值为 1。
  • 复制到剪贴板 — 单个或全部复制。
  • 强度指南 — 包含每个强度级别在消费者 GPU 和国家级威胁下估计破解时间的参考表。

如何使用密码生成器

第 1 步:设置长度

使用范围滑块(8–128)或数字输入框选择密码长度。两个控件保持同步——移动任一个都会更新另一个。默认值为 16 字符。

熵值显示立即更新:在长度 16 且所有字符集激活(共 88 个字符)时,您将获得约 16 × log2(88) ≈ 103.4 位——评为堡垒。

第 2 步:选择字符集

四个复选框控制包含哪些字符:

  • 大写字母 A–Z — 26 个字符
  • 小写字母 a–z — 26 个字符
  • 数字 0–9 — 10 个字符
  • 符号 — 26 个字符:!@#$%^&*()_+-=[]{}|;:,.<>?

允许取消勾选除一个以外的所有集合。尝试取消勾选最后一个剩余集合会触发错误提示:"Please select at least one character set."

第 3 步:可选排除易混淆字符

勾选"排除易混淆字符"可从池中移除 O、0、I、l 和 1。这会将字符集大小减少 5 个字符。熵值显示立即反映减少量。此选项适用于需要从屏幕朗读或输入的密码——例如通过电话传达或在文档中打印时。

第 4 步:设置数量并生成

使用计数滑块(1–100)选择每次点击生成多少个密码。点击"Generate"。每个密码独立生成,为每个字符位置调用 getUnbiasedRandomIndex。

成功提示确认生成了多少个密码。结果卡片出现,显示包含每个密码及其个别熵值和强度颜色指示器的可滚动列表。

第 5 步:复制密码

  • 点击任意密码行上的复制图标可复制单个密码。
  • 点击"Copy All"可将所有密码作为换行分隔的列表复制。

组件包含使用 document.execCommand('copy') 的备用剪贴板方法,适用于 navigator.clipboard 不可用的旧版浏览器环境。

实际应用示例

为预发布环境生成 API 密钥。 您需要 10 个微服务认证的唯一 secret。将长度设置为 32,保持所有字符集激活,将数量设置为 10,然后点击"Generate"。将所有内容复制到剪贴板并粘贴到 secret 管理器中。在 88 字符池中使用 32 个字符,每个密码约有 207 位熵——牢固处于荒谬范围。

为团队交接文档创建易读密码。 需要通过口头方式传达临时管理员密码。将长度设置为 16,启用"排除易混淆字符",并保持所有其他集合激活。生成的密码没有易混淆字符,便于朗读和正确抄录。

为测试账户准备不同复杂度的密码。 您想针对多个级别测试应用的密码强度测量器。以不同长度生成密码:8 个字符(弱/一般)、12 个字符(好)、16 个字符(强/非常强)、24 个字符(堡垒)。在测试数据中将每个作为种子值使用。

提示和最佳实践

选择长度前先了解强度级别。 全部集合激活(88 字符池)时 16 个字符的熵约为 103 位(堡垒)。降至 12 个字符约得 78 位(强)。熵值显示实时展示这些数值,无需手动计算。

在熵方面,更长的密码优于更复杂的字符集。 给 12 字符密码(78 位)添加符号的贡献,不如将长度增加 2 个字符。14 字符全小写密码(66 位:好)提供的熵多于 8 字符混合集密码(52 位:一般),尽管两个因素仍然重要。

选择性使用"排除易混淆字符"。 移除 5 个字符会稍微降低熵。对于没有人读取密码的机器间凭证,保持所有字符启用以获得最大熵。

荒谬级别是真实的。 在 150+ 位熵时,以当前计算速度暴力破解密码所需的能量超过可观测宇宙中存在的物理能量。对于所有集合激活的 128 字符密码,熵约为 827 位。工具以多彩彩虹效果显示"Ludicrous"。

需要为相关服务生成唯一密码时批量生成。 将数量设置为 5 或 10,一次点击"Generate"。每个密码独立随机,因此您一次操作即可获得一组唯一凭证。

常见问题和故障排除

"Please select at least one character set"错误。 您尝试取消勾选最后一个激活的字符集复选框。工具通过提前返回并显示错误来阻止这一操作。在取消勾选当前集合前,至少启用另一个集合。

复制按钮似乎没有反应。 如果 navigator.clipboard 不可用(某些浏览器安全上下文),工具回退到 document.execCommand('copy')。如果两者都静默失败,请检查页面是否获得焦点,以及剪贴板访问是否被浏览器权限阻止。

熵值低于预期。 检查"排除易混淆字符"是否意外被勾选——它会从池中移除 5 个字符。还要确认所有所需的字符集都已勾选,因为熵值显示仅反映当前激活的配置。

生成的密码没有符号,即使已启用符号。 随机性在设计上是不可预测的——短密码可能偶然从池中未选出任何符号字符。生成器不保证包含每种字符类型,只保证池中的每种字符类型在每个位置被选择的概率相等。增加长度以提高所有激活集合出现的概率。

所有生成的密码看起来相似。 这在密码学随机性下统计上不太可能,很可能是显示故障。点击结果标题中的"Regenerate"会生成新的一组。

隐私和安全

密码生成器使用 crypto.getRandomValues,即浏览器的密码学安全伪随机数生成器。没有生成的密码被发送到任何服务器:无 API 调用,无包含密码值的分析事件,无日志记录。Rejection sampling 算法(getUnbiasedRandomIndex)消除了简单方法中常见的模偏差,确保所有字符集位置的均匀分布。工具在页面加载后离线运行。生成的密码从不由应用程序本身存储;它们仅存在于浏览器内存中,直到您复制或离开页面。

常见问题解答

密码生成器免费吗? 是的,完全免费,无需账户、无需注册、无使用限制。

真的是随机的,还是伪随机的? 工具调用 crypto.getRandomValues,即浏览器的密码学安全随机数生成器(CSPRNG)。这与用于 TLS 密钥生成和其他安全关键操作的来源相同。它不是像 Math.random() 那样的简单伪随机函数。

什么是模偏差?这个工具能避免吗? 模偏差发生在随机数对不能均匀划分随机数空间的字符集大小取模时。结果是某些字符被轻微过度选择。该工具使用 rejection sampling:丢弃任何会引入偏差的随机值,然后重试直到找到可用值。该函数在源代码中称为 getUnbiasedRandomIndex。

可以离线生成密码吗? 可以。页面加载后,所有生成在本地运行,无需网络依赖。

"排除易混淆字符"会移除什么? 移除 O、0、I、l 和 1——五个在许多字体中视觉上相似的字符。适用于将被人类读取、输入或朗读的密码。

七个强度级别是什么? 弱(< 40 位)、一般(40–49)、好(50–59)、强(60–79)、非常强(80–99)、堡垒(100–149)、荒谬(150+ 位)。强度从 密码长度 × log2(字符集大小) 计算得出。

一次最多能生成多少个? 由计数滑块控制,每次点击最多 100 个。

符号集包含哪些字符? 符号字符集为 !@#$%^&*()_+-=[]{}|;:,.<>?——26 个字符。不包含撇号和反引号,避免了常见的 shell 转义问题。

生成的密码会被存储吗? 不会。密码在浏览器内存中生成并显示在结果列表中。关闭或离开页面将其清除。高级支持者可以使用历史面板查看之前生成的配置,但实际密码值仅本地存储在 IndexedDB 中——不在任何服务器上。

不同用途的推荐长度? 一般账户:16–20 字符(堡垒)。高价值目标(管理员账户、root 凭证):24–32 字符。无长度限制的机器间 API 密钥:32–64 字符。调整时熵值显示提供实时反馈。

相关工具

  • 密码短语生成器 — 生成具有相似熵的基于单词的易记密码。
  • UUID 生成器 — 为非密码用途生成符合 RFC 的通用唯一标识符。
  • 哈希生成器 — 使用 SHA-256、SHA-512 或其他算法对生成的密码进行哈希处理。

立即试用密码生成器:密码生成器

最后更新:2026年2月27日

继续阅读

更多文章试用 Password Generator