密码与密钥生成器
生成随机密码、单词组成的密码短语和 API 令牌,并以位数显示每种选择的熵。
熵
把工具固定在这里,会保存在此浏览器中。
固定一个工具,它的贴纸就会出现在这里。
生成随机密码、单词组成的密码短语和 API 令牌,并以位数显示每种选择的熵。
熵
每个字符、单词和字节都来自 crypto.getRandomValues,即浏览器的密码学安全随机数生成器。任何地方都没有使用 Math.random,因为它并非为生成密钥而设计,输出可以被预测。
从字符池中挑选需要小心。常见的捷径是把随机字节对池大小取模,但只要池大小不能整除 256,就会让某些字符的概率略高于其他字符。此工具改用拒绝采样:只取池所需数量的随机位,落在池之外的值会被丢弃并重新抽取。“每类字符至少一个”的规则也用同样的方式实现:缺少某类字符的整个密码会被丢弃,因此满足规则的每个密码出现的概率都相同。
生成的结果只存在于本页面。它们不会被发送到任何地方,也不会保存在浏览器中,再次生成或关闭标签页后就会消失。
以位为单位的熵,是等可能结果数量以 2 为底的对数,所以每多一位,猜测的工作量就翻一倍。这个数值根据实际启用的选项计算,并向下取整到整数位。启用全部四类字符时,字符池有 87 个字符,长度 20 可得 128 位。排除易混淆字符后,池缩小到 82 个,同样的长度得到 126 位。密码短语的词表有 1,024 个单词,正好每个单词 10 位:五个单词是 50 位,八个是 80 位。令牌每字节 8 位,所以 32 字节是 256 位。
这个数值描述的是生成器,而不是结果看起来如何。它之所以成立,是因为选择是随机的。人自己想出来的密码,熵通常远低于其长度所暗示的水平。强密码如果在两个网站上重复使用,只要其中一个网站泄露了它,两边就都暴露了。
需要由密码管理器保存并替你填写的,用随机字符。少数必须记住或手动输入的密码,例如密码管理器本身或加密磁盘的密码,用密码短语;要增强强度,就多加几个单词,而不是靠花招。只由软件读取的密钥,例如 API 密钥、会话密钥、HMAC 或 JWT 的签名密钥,用令牌。hex 只使用数字和字母 a 到 f。Base64url 用更少的字符承载同样的字节,而且其中任何字符在 URL 中都无需转义。
排除易混淆字符的选项适用于需要朗读密码或从纸上抄写密码的场合。符号集不包括引号、反斜杠、反引号、尖括号和空格,这些字符容易破坏 shell 命令和配置文件。$、& 和 ! 等符号仍然保留,所以在命令行中传递密码时,请用单引号把它括起来。
本页面在你的设备上用浏览器的密码学安全随机数生成器生成密码,不会发送或保存结果。它无法担保的是设备本身:恶意软件或恶意浏览器扩展可以读取页面上显示的内容。如果你使用密码管理器,用它内置的生成器可以在生成的同时保存新密码。
要算位数,而不是字符数。启用全部四类字符时,12 个字符是 76 位,16 个字符是 102 位,作为账户密码已经很强。对于密码学密钥或 API 密钥,目标是 128 位或以上:20 个字符,或者 16 字节及以上的令牌。
这只取决于位数。从这个词表中取五个单词是 50 位,相当于 8 个完全随机的字符;十个单词是 100 位,接近 16 个随机字符。同等强度下密码短语更长,但输入和记忆都容易得多。
使用令牌模式,32 字节,即 256 位,绝不要少于 16 字节。把值保存在密钥管理服务或环境变量中,不要写进源代码;一旦它出现在日志、聊天记录或代码仓库中,就要更换。
它会在独立窗口中打开,离线时也能使用。
要安装,请点按“分享”按钮,然后选择“添加到主屏幕”。