Password Generator:强力随机字符密码
生成密码学安全的随机字符密码(8-128 位),支持自定义字符集、模糊字符过滤与实时熵显示。所有处理都在浏览器内本地完成。
什么是 Password Generator?
Password Generator 用 crypto.getRandomValues 配合拒绝采样,生成密度高的随机字符密码,所以每个字符都是从所选字母表中以均匀概率抽出的,没有取模偏差。它是你需要那种永远不会自己手打的凭据时的正确工具——API 密钥、密码管理器条目、服务账号,一切住在保险库里的东西。我大多数情况下默认 24 个字符、四种字符类全开,只有 root 账号和签名密钥才上 32 或 40。如果你想要的是好记而不是密度,本站的 Passphrase Generator 走的是 XKCD 词组路线。这页讲的是相反的取舍:每字符熵最大化,记忆成本归零。
主要功能
- 密码学安全的随机源——随机性来自
crypto.getRandomValues,即 Web Crypto API 背后的 CSPRNG。生成器使用拒绝采样而非朴素取模,因此 88 字符的字母表也能给出均匀分布的抽取,不会偏向前 26 个字母。 - 8 到 128 的长度滑块——拖动或输入数字。旁边的数字输入框可输入精确值。8 是下限,因为更短不值得生成;128 是会被截断字段的上限。
- 四个独立的字符类开关——大写 A-Z、小写 a-z、数字 0-9 和符号
!@#$%^&*()_+-=[]{}|;:,.<>?。把目标系统拒收的取消勾选。工具阻止取消最后一个剩余类,所以你不会从空字母表生成。 - 排除模糊字符——从字母表中移除
O、0、I、l、1。每字符大约 0.4 比特的代价,换来不必眯着眼读印出来的恢复码。 - 实时熵面板——你切换类或拖动长度滑块时,总比特、字符集大小、每字符比特会重新计算。比特总数按七级颜色标尺,从 Weak(红)到 Ludicrous(彩虹)。
- 批量生成最多 100——拖动数量滑块然后点 Generate,一次生成最多 100 个候选,每个都附带自己的熵读数。
- 逐行与批量复制——每个生成的密码都有自己的复制按钮,Copy All 用换行连接整张表。两者在 Clipboard API 不可用时回退到
execCommand('copy')。 - 每个密码的强度等级——每行输出显示其比特数和带色等级标签(Weak、Fair、Good、Strong、Very Strong、Fortress、Ludicrous)。
如何使用 Password Generator
第 1 步:设置长度
"Length" 滑块从 8 到 128。标签显示当前值。旁边的数字输入框接受同样的范围,失焦时会把越界值夹回来。默认 16 对普通账号够用;敏感的就提到 24 或 32。
第 2 步:选择字符类
"Character Sets" 下面四个复选框切换字母表:
- 大写(A-Z)——26 个字符
- 小写(a-z)——26 个字符
- 数字(0-9)——10 个字符
- 符号——
!@#$%^&*()_+-=[]{}|;:,.<>?中的 26 个字符
四项默认全开,组成 88 字符的字母表(约 6.46 比特/字符)。把目标系统禁止的取消勾选。如果服务拒收符号,你每字符大约损失 0.4 比特;用多几个字符的长度补回来。
第 3 步:决定模糊字符
类切换下面的 "Exclude ambiguous characters" 复选框,会从合并字母表中移除 O、0、I、l、1。任何你将从纸上读取的密码都勾上——印出来的恢复码、手写的钱包种子、要给客服念出来的字符串。只在保险库里待着、可读性无所谓且每比特熵都要榨干的凭据保持关闭。
第 4 步:看懂熵面板
选项下方那条灰色带显示三个数字:
- Total entropy——配置长度和字母表下密码的随机性比特数,按等级着色。
- Charset——经过类切换和模糊字符排除后当前的字母表大小。
- Bits per char——
log2(charset_size)。四类全开且不排除时:log2(88) ≈ 6.46。
强度等级对应总比特数:
- Weak(红):低于 40 比特
- Fair(橙):40-49 比特
- Good(黄):50-59 比特
- Strong(青柠):60-79 比特
- Very Strong(青):80-99 比特
- Fortress(紫):100-149 比特
- Ludicrous(彩虹):150 比特以上
实战中:60 比特是底线,80 比特是日常目标,100 以上是主凭据或签名密钥的级别。
第 5 步:生成、检查、复制
设定 "Generate" 数量滑块(1-100)然后点 Generate。结果出现在可滚动的列表里,带编号,每条附带自己的熵读数和等级标签。每行旁边的复制图标只复制那条;Copy All 复制整张表,以换行连接。Clear 清空。结果面板顶部的 Regenerate 用相同设置出一批新的。
实际示例
24 字符的密码管理器条目
设置:Length 24、四类全开、排除模糊关、count 5。
输出示例:
qP7$mK#xR2!nVz8&jL*pYwH9
那是 24 * log2(88) ≈ 155 比特——Ludicrous 级。这是普通的"塞进 1Password 然后再也不看"凭据。一次出五个,让你能挑前几个字符不那么难打的那个,以防自动填充失灵要手打。
替换被泄的服务账号 API 密钥
设置:Length 40、大写+小写+数字、符号关(部分 HTTP 客户端至今还会把 header 里的符号搞错)、排除模糊关。
输出示例:
aFq2KpRy7nMxBz4tHsWvLg3jCdN8VuTeXrYzPmQk
那是 40 * log2(62) ≈ 238 比特。关掉符号让每字符熵从 6.46 掉到 5.95,但长度补得绰绰有余,而且你避免了 & 或 + 在 header 值里被某处意外 URL 解码的边角情况。被泄的密钥被轮换,新值进入 secret manager,40 字符的长度意味着哪怕轮换系统不小心把它打进日志,暴力破解也根本不在桌面上。
一个永远不会再访问的网站的一次性密码
设置:Length 16、只有小写+数字、排除模糊开、count 1。
输出示例:
8kqr3zhmf4td9xbn
约 16 log2(31) ≈ 79 比特。把模糊字符抽掉的小写加数字,是论坛注册表单拒收符号、而你又不想花两分钟去 debug 为什么 让他们的验证器尖叫时拿出来的方案。这仍然是 79 比特——Strong——对一个再也不去的网站算是过度,但密码管理器在替你记,所以过度免费。
提示与最佳实践
长度在每个等级上都赢过复杂度。 30 字符的纯小写串(约 141 比特)比 16 字符全类(约 103 比特)更强。如果某站点强制"必须含大写、数字和符号",就把所有框勾上;如果不强制,长一些更朴素的版本反而更好处理。
60 是底线,80 是日常目标,100+ 是高价值级别。 60 比特以下,GPU 集群几天就能啃完密钥空间。80 以上,连国家级机房也得算年。100 以上你就完全离开暴力破解的区间了。
用密码管理器,让它替你记一切。 24 字符随机密码本来就设计成不可记忆。如果是你真要手打的凭据——主密码、磁盘加密密钥、恢复短语——改用 Passphrase Generator 生成。随机字符和词组短语是为不同问题设计的不同工具。
生成十个挑一个。 count 5-10 的时候你能挑一个开头不是难打序列的候选(!@#$ 数学上和任意四个字符等价,但人体工学上更糙)。
别后处理生成的密码。 生成后任何对字符串的改动都会让熵掉到面板示数下面。要么照单全收,要么再生一个。
常见问题与排错
"Please select at least one character set"——所有类复选框都没勾。工具不让你取消最后一个,但如果在勾任何类之前就按 Generate,会出这个错。至少勾一个再试。
网站把生成的密码作为太长拒收。 一些遗留表单悄悄把输入截到 16、20 或 32 字符——它们接受较长字符串,但只存前 N 个。如果用全字符串登不进去,把长度滑块拉低,再用轮换后的凭据试一次。
网站拒收特定符号。 把 "Symbols" 整个取消勾选,长度增加 4-6 个字符把丢的熵补回来。这个生成器没有自定义符号字段——关掉符号生成,然后如果表单需要,把允许的几个符号手动粘到随机位置。
16 字符也只显示 "Weak"。 你大概只勾了一个类。16 个纯数字是 16 * log2(10) ≈ 53 比特——Good。打开第二个类,看比特数往上跳。
生成的密码看起来"不够随机"。 随机输出经常给出看起来不随机的簇——三个连续元音、两个相邻大写字母。人类的模式识别会标记为"不对",但这正是均匀随机性会产出的。
隐私与安全
密码生成在你的浏览器内通过 crypto.getRandomValues 运行,即 Web Crypto API 暴露的 CSPRNG。生成的密码不会发送到任何服务器。工具下方的历史面板只把最近的生成保留在你浏览器的 IndexedDB 里,方便你找回那些复制后又丢了的;用完了就在面板里清掉,如果你完全不希望留下本地痕迹,在隐身/无痕窗口里用。浏览器的 CSPRNG 在所有现代平台都用 OS 级熵做种,所以没有"相信我,种子可靠"这种顾虑。
常见问题
为什么用随机字符而不是密码短语?
随机字符按字符密度更高——四类全开时约每字符 6.46 比特,7,776 词的密码短语词表是每词 12.9 比特。永远不打的凭据,密度赢,因为长度便宜。要打的凭据,短语赢,因为可记忆性重要。仓库专属凭据用这个工具,主密码和恢复短语用 Passphrase Generator。
什么是拒绝采样,为什么重要?
如果你生成一个随机字节(0-255)然后取模 88 来从 88 字符的字母表里挑,byte % 88 的前 88 个输出会比后 80 个略微更可能,因为 256 不是 88 的倍数。拒绝采样把会落入偏差区间的值丢弃并重抽,产生均匀分布。本工具对每个字符在 32 位随机整数上使用它。
我的密码该多长?
让熵面板显示常规凭据 80+ 比特、高价值 100+ 比特的长度。四类全开时,13 字符是 84 比特,16 字符是 103 比特。面板帮你算,瞄准绿色或更好的等级。
能生成满足某个策略(每类至少一个)的密码吗?
本工具不强制"至少一个大写、至少一个数字"这种规则。四类都勾且长度 ≥ 16 时,缺某类的实际概率低于 5%。如果表单拒收,重新生成。
我把生成的密码弄丢了会怎样?
如果已经复制到密码管理器,从那里恢复。否则看工具下方的历史面板——它会把最近的生成存在浏览器的 IndexedDB 里。如果你清了历史或在无痕模式下生成,密码无法找回;在目标服务上轮换凭据。
相关工具
- Passphrase Generator——为你要手打的凭据生成 XKCD 风格便于记忆的词组短语。
- UUID Generator——当你需要全局唯一标识符而不是凭据时,生成 v4 UUID。
- Hash Suite——把生成的密码做 SHA-256、SHA-512 或 BLAKE2 哈希,作为确定性种子使用。
- Base64 编码/解码器——把生成的密码编码,在原始字节会被搞错的环境里安全传输。
- 即将推出: Argon2 Hash——当你需要把密码存起来用于校验而非恢复时,用现代 KDF 做哈希。
立即试用 Password Generator:Password Generator