安全
强随机密码生成器
密码由 crypto.getRandomValues 生成,而不是 Math.random;强度显示的是真实熵值(比特),能看出到底有多安全,而不是一个凭感觉的进度条。
怎么用
- 拖动滑块设置长度,日常 16 位是稳妥的默认值。
- 勾选需要的字符类型。类型越少字符池越小,同样强度就需要更长的密码。
- 点「生成」,满意后点「复制」。
- 直接粘贴进密码管理器,不要写在纸上或记事本里。
熵,以及为什么大多数强度条在骗人
熵以比特计量:可能密码总数的以 2 为底的对数。从 62 个字符里取 20 位,熵是 20 × log₂62 ≈ 119 比特。大多数强度条并不算这个,它们只是看有没有数字和符号,然后给结果封顶,于是 12 位和 40 位都显示「强」——而后者被破解的难度是前者的万亿的万亿倍。
长度胜过复杂度
NIST 在 2017 年撤回了自己的组合规则:不强制符号、不强制定期更换、不强制过期。理由是算术:给 12 位小写密码加一位,搜索空间乘以 26;强制加一个大写字母,只乘以 2。长度是唯一能规模化的杠杆,所以四个单词组成的短语,在熵和可记性上都胜过八个字符的乱码。
生成之后该做什么
一个自己记不住的强密码,只有在「有东西替你记」的前提下才有用。把它放进密码管理器,然后给管理器设一个你记得住的长口令——四五个随机词在任何维度上都胜过一串短符号,包括好记程度。
接着去修真正导致泄露的那一环:复用。一站一密,意味着任何一家出事都只波及那一家。凡是提供两步验证的地方都打开,优先用验证器应用或硬件密钥,而不是短信——短信可以被补卡攻破。
常见问题
这个生成器真的随机吗?
是。它用的是 Web Crypto,也就是浏览器给 TLS 密钥用的同一套随机源,而不是给动画用的 Math.random。
「比特熵值」是什么意思?
它表示可能密码数量的以 2 为底的对数。每多 1 比特,攻击者的工作量翻一倍。在线账号 70 比特以上算强。
为什么少了几个字母?
大写 I、大写 O 和小写 l 被排除,因为它们在屏幕上或口头传达时极易混淆。
这里生成的密码是真随机吗?
取自浏览器的密码学随机源,不是 Math.random——后者可预测,任何与安全相关的用途都不该用它。
一定要加符号吗?
只有对方站点强制要求时才加。真正抵抗猜测的是长度;符号主要是在满足那些「在人们搞清这件事之前」写下的密码规则。