tigtools

密码生成器

选择密码长度和字符类型,使用浏览器的密码学随机数生成器生成密码。密码仅在你的设备上生成,不会发送到任何地方。

在浏览器中运行 无需注册

20
包含

如果某个网站不接受部分符号,可以编辑此列表。空格会被忽略,重复字符只计一次。

生成的密码

    129 位
    估算熵值
    非常强
    强度
    89
    可用字符数

    使用方法

    1. 使用滑块设置长度,或输入精确的字符数(4–128)。
    2. 选择要包含的字符类型。如果某个网站只接受特定符号,可以编辑符号列表。
    3. 可选:排除容易混淆的字符。对于有字符组成规则的网站,请保持启用“至少使用每种所选类型一次”。
    4. 复制单个密码,或使用“全部复制”按每行一个密码复制所有密码。点击“重新生成”即可生成一组新密码。

    工作原理

    每个字符都通过 crypto.getRandomValues(浏览器内置的密码学安全随机数生成器)随机选取。工具不会使用 Math.random。要从包含 n 个字符的字符集中选取一个字符,工具会生成一个 32 位随机数,并舍弃大于该范围内最大 n 的倍数的部分中的数值。通过这种拒绝采样方式可以避免模偏差,确保字符集中的每个字符被选中的概率完全相同。

    启用“至少使用每种所选类型一次”后,工具会先从每种所选类型中各选取一个字符,再从合并后的字符集中填充剩余位置,最后使用同一无偏随机源驱动 Fisher–Yates 洗牌算法打乱所有字符的位置。这样可以避免必选字符总是出现在开头。

    熵值的计算方式为 log2(字符集大小) × 长度。使用默认的 89 个字符生成 16 位密码,熵约为 103 位;生成 20 位密码,熵约为 129 位。“至少使用每种所选类型一次”会略微减少可能的密码数量,因此实际熵值会比显示值稍低。强度标签仅供参考:低于 28 位为极弱,28–39 位为弱,40–59 位为一般,60–99 位为强,100 位及以上为极强。熵值只适用于这类随机生成的密码,无法衡量人自行编造的密码。

    示例

    用于密码管理器的密码

    保留默认设置(20 个字符,包含全部四种类型)。生成的密码熵约为 129 位,远远超出可被猜中的范围,密码管理器也会替你记住它。

    不接受部分符号的网站

    如果银行只接受 !@#$%,请将符号列表替换为这五个字符。字符集会缩小到 67 个字符,因此 16 位密码的熵仍约为 97 位。

    需要在电视上输入的 Wi-Fi 密码

    关闭符号并排除容易混淆的字符。不使用 I、l、1、O、0 和 o 后,从剩余的 56 个字母和数字中生成 16 位密码,既容易口述,也仍有约 93 位熵。

    常见问题

    密码应该多长?

    对于由密码管理器保护的账户,16–20 个随机字符就足够了。如果你需要经常手动输入密码,使用更长的纯字母和数字密码会更容易输入,强度也可以与较短的符号密码相当。

    在网站上生成密码安全吗?

    此页面完全在浏览器中使用操作系统的安全随机源生成密码。密码不会发送到服务器、保存或纳入分析。页面加载后即使断开网络,也可以继续使用。

    为什么排除容易混淆的字符会降低熵?

    熵取决于每个位置可以选用多少个字符。移除字符会缩小字符集,因此每个字符增加的熵会略少一些。增加几个字符的长度就能弥补这一点。

    什么是“模偏差”?为什么要避免它?

    简单的生成器会先取一个随机数,再用它除以字符集大小后的余数来选择字符。除非字符集大小能整除随机数范围,否则某些字符出现的概率会略高。此工具会舍弃分布不均的尾部数值并重新取数,因此所有字符被选中的概率相同。

    隐私

    密码通过浏览器中的 crypto.getRandomValues 生成,不会上传、存储、记录或发送到分析服务;系统只会记录一条匿名的工具使用事件。复制密码时会使用你设备的剪贴板。