跳到正文

密码生成器

Password Generator

按长度、字符集和是否排除易混字符的规则生成随机密码,需要的话可以一次生成很多条。

自己想出来的密码带着你思考时所用语言的形状,而破解规则集利用的正是这种形状。这里改从浏览器的加密级随机源里抽取字符,所以决定强度的只有长度和你选的字符集。

🔒 完全在你的浏览器里运行passwordgeneratorrandom
方式

…

熵

130.9位

强度

很强

字符集

94个字符

长度

20个字符

猜出来要多久

平均大约 10^19年——比宇宙存在的时间还长。

一个用未加盐的 MD5 或 SHA-1 存的被盗数据库,用八张新显卡组成的机器来打。该照着做打算的是这个数,因为网站怎么存你的密码,你说了不算。 这个数是密钥空间的一半——130.9位——除以每秒 1,000,000,000,000次。它假设攻击者完全清楚这条密码是怎么造出来的,而且没有别的路可走;一个账号里最薄弱的一环,很少是密码。

随机字符
20

取自: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

这里的每条密码都出自这个标签页里的 crypto.getRandomValues。不发往任何地方,也不写进任何存储,关掉标签页就干净了——没有历史记录要清。它唯一会离开这个页面的去处是剪贴板,而别的程序读得到剪贴板;粘进密码管理器之后,再随便复制点无害的东西盖掉它。

怎么用

  1. 先定长度

    长度带来的收益比字符种类多。只用小写字母的 16 位,胜过混合所有字符类型的 8 位,而且更好打。

  2. 网站有限制时关掉对应的字符类型

    有些系统拒绝符号,或者悄悄截断。排除易混字符(0/O、1/l/I)在密码需要从屏幕上读出来再手动输入时很有用。

  3. 需要时批量生成

    批量初始化账号或设备时可以直接要一整列。每一行都是独立抽取的,不是从上一行推导出来的。

  4. 关掉标签页之前先把它放到别处

    这里什么都不保存。标签页一关,密码也跟着没了,所以趁它还在屏幕上,把它粘进密码管理器。

常见问题

密码是在服务器上生成的吗?

不是。它来自你浏览器里的 `crypto.getRandomValues`,从不发送、从不记录。断网之后页面照样能用,这是你自己验证这一点最简单的办法。

这里面有用到 `Math.random` 吗?

没有。`Math.random` 快,但可预测到只凭几个样本就能重建它的输出,所以不能用来生成秘密。另外,选字符时对超出范围的字节是丢弃重抽而不是取模,所以字符集里每个字符出现的概率相同。

我该用这个,还是密码短语生成器?

凡是密码管理器会替你输入的,用这个。少数你必须记在脑子里、亲手敲出来的秘密——设备解锁、磁盘密钥、管理器自己的主密码——用密码短语生成器。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。