密码生成器
使用浏览器内置的加密安全随机数生成器创建随机密码或易记的密码短语。密码不会发送到任何地方,并在你调整选项时实时重新生成。
强度指示器的工作原理
基于真实的信息熵计算,而非主观判断。
熵值根据实际字符集大小和长度计算得出:字符密码使用长度 × log2(字符集大小),密码短语使用单词数 × log2(词库大小)。低于 40 比特很容易被离线破解;60 比特以上对大多数账户来说已经足够安全;90 比特以上则相当充裕。
为什么推荐密码短语
像 xK9#mQ2p 这样的随机字符串虽然难以记忆,但安全性未必高于 coral-lantern-otter-42,而后者你却能不看屏幕就打出来。这里的词库约有 390 个单词,单词越多就越能弥补与真随机字符之间的熵差。
工作原理
每一次随机取值都来自 crypto.getRandomValues,也就是浏览器由操作系统熵源支持的密码学安全生成器,而绝不是 Math.random,后者的输出可预测性足以被重建。这里还有一个细节:用简单取模的方式把随机字节映射到字符集合会使分布产生偏差,因为 256 很少能被字符集大小整除。这个工具改用拒绝采样:任何超过字符集大小最大偶数倍数的字节值都会被丢弃并重新抽取,所以每个字符出现的概率完全相等。
熵值数学带来的一个值得记住的结论:长度胜过复杂度。每个字符贡献的是字符集大小的以 2 为底的对数,因此开启全部符号大约只为每个字符增加半比特的熵,而仅仅把密码延长两个字符所增加的熵通常更多。如果某个网站的符号规则让你为难,加长密码总能赢得这场争论。
你可以亲自验证隐私声明:打开开发者工具,切换到网络面板,多次点击重新生成。不会触发任何请求。页面在完全断网的情况下也能生成密码,而且不会保存任何内容,生成的密码只存在于这个文本框和你的剪贴板中。
来自博客: 用真实数字讲清楚密码熵