← 返回博客列表

在线密码生成器用 Math.random 危险吗?看熵与 Web Crypto

解释密码生成器应使用 crypto.getRandomValues、如何估算熵,以及 TwoThink 密码生成器的用法与排除易混淆字符选项。

很多「在线密码生成器」页面花哨,底层却是 Math.random()。对普通网站登录也许勉强够用,对重要账号我不建议赌。

该用什么随机源

浏览器提供 Web Crypto 的 crypto.getRandomValues,由系统熵池喂养,适合生成密钥材料。TwoThink 密码生成器 只用它,并做均匀采样,避免「取模偏差」。

强度条在说什么

强度按近似熵:长度 × log2(字符集大小)。

  • 6 位纯数字:熵很低 → 弱
  • 16 位且含大小写、数字、符号:通常进入极强区间

还可打开「排除易混淆字符」,去掉 0 O I l 1 |,方便手打,字符集略小,强度会相应变化。

会不会被网站记下来?

不会。生成与复制都在你的浏览器里完成,服务端收不到密码内容。请仍避免在公共场合长时间亮屏展示。

和 UUID / Hash 的分工