密码生成器
使用浏览器加密接口生成高强度随机密码。可设置长度、字符集、排除形近字符、保证每类字符至少一个,并显示密码熵(比特)。
使用浏览器加密接口而不是 Math.random 来生成随机密码,这样得到的口令才适合用在真实账户上。你可以选择长度、包含哪些字符集、是否排除 l、1、I 和 O 这类形近字符,以及是否保证所选每一类字符至少出现一个。
以比特为单位的熵值告诉你这个密码能抵抗多少猜测:低于 60 比特,面对有心的攻击者就很脆弱;80 比特对普通账户已经足够扎实;主密码或 API 密钥则希望达到 100 比特以上。在本地生成意味着密码永远不会经过网络传输,而这正是关键所在。
如何生成高强度密码
选择长度与字符集
设置形近字符与保证选项
复制密码并查看熵值
常见问题
密码应该多长?
凡是重要账户,混合字符集取 16 位就是不错的默认值。长度带来的强度比生僻字符更多,所以如果可以选择,宁可要 20 位普通字符,也不要 12 位带符号的。
熵值代表什么?
它是生成的密码里包含多少比特的随机性,由长度和字符池大小算出。每多一个比特,猜测所需的工作量就翻一倍。
为什么要排除形近字符?
当你要从屏幕上读密码,再在手机上或设备里输入时,l、1、I、O 和 0 这类字符很容易看错。排除它们能大幅降低手动输入出错的概率。
用它安全吗?
这些值来自 crypto.getRandomValues,也就是浏览器的加密随机源,是生成密码的正确选择。生成在本地完成,不会有任何内容被传输出去。
可以只生成一个密码到处复用吗?
不可以。每个服务都要用各自唯一的密码,并把它们保存在密码管理器里——复用同一个密码意味着一次泄露就会连累所有共用它的账户。
生成的密码会被保存在什么地方吗?
不会。不保存、不记录、也不发送;除非你已经复制,否则关掉页面密码就没了。
一览
| 输入 | 文本 |
|---|---|
| 多个文件 | 否 |
| 运行位置 | 在你的浏览器中——文件永远不会被上传 |
| 离线可用 | 是 — 页面加载完成后 |
| 价格 | 免费,无需注册,无水印 |
安全地处理机密信息
开发者工具处理凭据的频率比人们意识到的更高,而风险不在于算法,而在于数据去了哪里。哈希是单向的,它不是加密——MD5 和 SHA-1 在任何与安全有关的用途上都已被攻破,即使是 SHA-256,用来存储密码也是用错了工具,bcrypt、scrypt 或 Argon2 存在的意义恰恰就是慢。Base64 是一种编码,不是保护:任何人都能解码,所以千万不要把它当作混淆。JWT 任何持有它的人都能读取,因此载荷里绝不能放机密,而解码一个令牌并不验证它的签名——验证需要密钥。本站的一切都在你的浏览器中本地运行,这正是它能够安全处理令牌和密码的原因。
转换在哪里悄悄出错
大多数转换缺陷与语法无关,而与含义有关。一列邮编的 CSV 字段会在表格软件猜它是数字的那一刻丢掉前导零;一个很长的 ID 会超出浮点精度;日期会因为先写日还是先写月而意思大变。JSON 的键是无序的,但数组是有序的,排序键的工具不会改变任何东西,而排序数组的工具会改变数据。Unicode 是另一个陷阱:文本可能以 UTF-8、UTF-16 或带字节顺序标记的形式到来,解码器猜错就会把带重音的字符变成乱码。在信任任何转换之前,抽查第一行和最后一行、任何带前导零的字段,以及任何含有引号、逗号或换行的字段。