ToolAct工具行动

密码生成器

生成强密码,自定义长度和字符类型

密码配置
416324864
大写字母A-Z
小写字母a-z
数字0-9
特殊符号!@#$%^&*
自定义字符使用自定义字符集
高级选项

排除容易混淆的字符,如 0O、1lI

排除相似字符i, l, 1, L, o, 0, O
以字母开头便于复制粘贴
点击生成按钮创建密码
密码强度
批量生成
点击「批量生成」按钮生成多个密码
生成历史
暂无历史记录

什么是密码生成器?

密码生成器会根据指定长度和字符规则创建随机、难以猜测的强密码。可靠的生成方式应使用加密安全随机数,并在目标系统确实支持时才组合大写字母、小写字母、数字和特殊符号。强密码能降低字典攻击、暴力猜测和撞库风险,但不能替代密码管理器、每个账户使用唯一密码和启用多因素认证等安全习惯。过于复杂的密码不应靠记忆或重复使用,而应安全保存。对于团队或共享系统,还需要明确轮换周期、负责人和访问权限。

使用方法

生成步骤

  1. 选择密码长度(建议至少 12 位)
  2. 勾选字符类型:大写字母、小写字母、数字、符号
  3. 可选择排除易混淆字符,如 0O、1lI
  4. 点击生成按钮,不满意可重新生成

密码强度

  • 弱:少于 8 位或仅单一字符类型
  • 一般:8-11 位,混合字母和数字
  • 良好:12-15 位,包含多种字符类型
  • 强:16 位以上,包含全部字符类型

安全提示

  • 所有密码均在本地生成,不会上传至服务器
  • 不同网站使用不同密码
  • 使用密码管理器安全存储密码
  • 定期更换重要账户的密码
  • 避免在密码中使用个人信息

使用场景

按精确字符规则生成密码设置 4 到 64 位的长度,选择大写字母、小写字母、数字、符号、自定义字符池、排除字符、去除易混淆字符,以及是否要求以字母开头。密码在本地生成和使用——页面从 crypto.getRandomValues 获取熵源,生成的字符串仅保存在内存中直到你复制到目标应用,不会上传到任何服务。
为账号注册或测试批量生成使用当前规则一次生成 5、10、20 或 50 个密码,并从批量列表中逐个复制。简单、中等、高强度和 PIN 码的预设让切换真实凭据和测试数据变得很快。批量列表中的每个值都在本地生成和使用,同一会话中可以同时产出一次性测试数据和真实账号密码,且都不会经过网络传输。
保留本地生成历史最近生成的密码会带时间戳保存在 localStorage 中,可以从页面清除。这在注册会话期间很方便,但也意味着在共享电脑上使用后应及时清除历史。由于每个条目都在本地生成和使用,历史记录是唯一存在的副本——通过清除按钮删除后就真正从设备上移除了。
生成易记的口令式密码关闭符号,将长度设在 20 左右,仅使用小写字母和数字组合,生成的密码更接近口令风格。但仍建议用密码管理器保存——长字符串本身不是为记忆设计的。随机源始终在浏览器标签页内,因此在离线或受防火墙限制的工作站上也能使用同一功能。
生成符合目标密码策略的测试数据设置与生产环境验证器相同的长度、字符类别和排除规则,然后批量生成 20-50 个密码用于 QA 测试、注册表单或撞库模拟。生成器不会对真实系统做策略校验,所以请先确认策略本身是否正确。由于每个测试数据都在本地生成和使用,同一页面可以产出数千个合规的测试密码,而不会通过网络调用泄露策略或生成的值。

技术原理

密码生成器从 crypto.getRandomValues(new Uint32Array(n)) 获取随机性,该函数用操作系统熵源(Linux 的 getrandom、Windows 的 BCryptGenRandom、macOS/iOS 的 SecRandomCopyBytes)填充类型化数组,产生密码学安全的伪随机值。这是 W3C Web Cryptography API 定义的 CSPRNG——不同于 Math.random(),后者在 V8 中使用 xorshift128+ 算法,官方文档明确说明它是非密码学的、可从少量输出样本预测。 字符池由用户选择的字符类组成:大写字母(26 个 A-Z)、小写字母(26 个 a-z)、数字(10 个 0-9)和特殊符号(32 个 !@#$%^&*()_+-=[]{}|;:,.<>?),最大池容量为 94 个字符。自定义字符集或排除列表(包括过滤 i、I、l、L、1、o、O、0 等易混淆字符)可进一步精简字符池。每个密码字符通过 array[i] % pool.length 选取,由于 CSPRNG 输出在 32 位上均匀分布,且池长度不超过 256 时取模偏差极小(偏差低于 0.00000006%),远低于实际可感知范围。 密码强度由搜索空间大小衡量:对于大小为 C 的字符池和长度为 L 的密码,可能的密码数量为 C^L。以比特为单位的熵值为 log2(C^L) = L × log2(C)。启用全部四类字符(C=94)的 16 位密码,产生 94^16 ≈ 4.4 × 10^31 种组合,约 105 比特熵。假设攻击速度为每秒 10^12 次猜测(大致相当于大型 GPU 集群对 NTLM 等快速哈希的吞吐量),穷举搜索需要约 4.4 × 10^19 秒——远超宇宙年龄。该模型假设攻击者必须逐一测试所有组合(无字典或模式捷径),且密码使用 bcrypt 或 Argon2id 等慢速加盐哈希算法而非明文存储。 NIST SP 800-63B 建议用户自选密码最少 8 个字符,机器生成凭据最少 6 个随机字符,并记录字符集。生成器的 4-64 位长度范围覆盖从 PIN 码到高熵机器凭据的各种场景。「以字母开头」选项确保首字符从 [A-Za-z] 中选取,满足要求密码以字母开头的遗留系统。

  • CSPRNG 来源:crypto.getRandomValues() 从操作系统内核的 CSPRNG(getrandom/BCryptGenRandom/SecRandomCopyBytes)获取熵——不同于 Math.random()(xorshift128+),它不可预测、不由页面设定种子,适合凭据生成。
  • 字符空间数学:启用全部四类时池大小为 94;每个字符的熵为 log2(94) ≈ 6.55 比特。16 位密码携带约 105 比特熵;长度翻倍到 32 位则提升至约 210 比特。
  • 取模选取:array[i] % pool.length 将 32 位 CSPRNG 输出映射到字符索引——池长 256 以下时偏差低于 6 × 10^-8%,在密码学上可忽略。
  • 暴力破解抵抗模型:以每秒 10^12 次猜测(GPU 集群规模),16 位、94 符号的密码穷举需要约 10^19 秒——但这假设使用快速哈希;bcrypt 以 cost factor 12 运算时攻击者降至每秒约 10^4 次猜测,即使是 8 位密码也有较强韧性。
  • 易混淆字符排除:过滤器移除 {i, I, l, L, 1, o, O, 0}(8 个字符)——这将池从 94 缩减到 86,每个字符损失约 0.6 比特熵,在手动抄写场景中为可用性带来的收益可以接受。
  • NIST SP 800-63B 对齐:该标准要求机器生成密钥最少 6 个随机字符,并建议记录字符空间——生成器的预设(简单 8 位、高强度 20 位)对应不同的保证级别。
  • localStorage 历史:最近 10 个生成的密码保存在 window.localStorage 中,其作用域为源和浏览器配置文件——清除历史会从存储中删除,但磁盘级取证工具可能恢复它们,因为 localStorage 在浏览器配置文件目录中以明文 SQLite 数据库存储。

示例

强密码(混合字符类型)

Kx9#mP2$vL7@nQ4!  -  16 位,包含全部四类字符(大写/小写/数字/符号)
强度:极高;即使每秒尝试 100 亿次,暴力破解也需要数百年

PIN 码(4 位数字)

8527  -  4 位纯数字
强度:1 万种组合;只适合配合限频和锁定的设备解锁,不适合在线账户

密码强度对比

8 位,仅小写        :26^8      ≈ 2.08e11 种组合
8 位,混合字符类型  :94^8      ≈ 6.10e15 种组合
16 位,混合字符类型 :94^16     ≈ 3.7e31 种组合
说明:每多一位字符,密钥空间扩大 94 倍,而不是 8 倍——长度比字符种类更关键

常见问题

密码是在我的浏览器里生成的吗?

是的。页面使用 Web Crypto API 的 crypto.getRandomValues,提供加密强度的随机字节。密码不会离开你的设备,不会被记录,也不是从确定性种子派生的。如果想确保万无一失,可以刷新页面以启动新的熵序列。

应该选择多长的密码、包含哪些字符?

对于在线账户,16 位以上、包含大小写字母、数字和符号是当下的最低标准。对于主密码(密码管理器、加密密钥),20 位以上或 6-7 个单词的口令短语更安全。超过一定长度后,长度比字符集复杂度更重要。

为什么有些网站拒绝我刚生成的密码?

一些网站仍在执行令人意外的限制:最长长度(通常 12-20 位)、不允许符号、只允许特定符号或不允许空格。页面提供了字符开关,方便你匹配规则。请举报这些网站——这类策略实际上削弱了安全性。

是否会有意避开某些字符?

如果开启「避免相似字符」选项,生成器会排除 0/O、1/l/I 等抄写在纸张或便利贴时容易看错的字符对。如果只在数字环境下使用密码,可以关闭此选项以获得最大熵。

长随机密码比口令短语更安全吗?

在熵相同的情况下,两者抵御暴力破解的难度相当。一个 16 位的混合密码大致等同于一个从 2000 词表中随机选 6 个词的口令短语。口令短语更易输入和记忆;纯随机字符串则更适合从密码管理器粘贴。按使用场景选择即可。

可以放心用它生成密码管理器主密钥吗?

可以——随机源与浏览器生成 HTTPS 密钥所用的 Web Crypto API 完全相同。话虽如此,对于极高价值的秘密(主密钥、恢复码),人们往往更倾向于掷骰子(diceware)或使用离线工具,单纯为了把浏览器从信任链中移除。

我应该把生成的密码保存在这里吗?

不应该。页面不保存密码;请立即将其复制到密码管理器(1Password、Bitwarden、KeePass 或浏览器内置管理器)。关闭页面或刷新会永久丢弃密码。