博客
简体中文

随机密码生成器 — 在线生成强密码

基于浏览器加密随机数的随机密码生成器

在浏览器中处理 · 不上传任何内容

选项
熵: 103 位强度: 非常强

    功能简介

    选好长度和想要的字符类型,工具就会生成难以猜测的随机密码。一次最多可以生成 100 个,每个都能一键复制。所有计算都在浏览器中完成,不会上传任何内容。

    使用方法

    1. 用滑块(最多 128)或数字框设置长度,范围为 4 到 1024。下方的 16、32、64、128、256、512、1024 按钮可以直接跳到对应长度。
    2. 勾选需要的字符类型:小写字母、大写字母、数字、符号。
    3. 如果需要手动抄写密码,打开排除易混淆字符。
    4. 每次更改选项,结果都会刷新。点击“重新生成”可以用相同选项再生成一组。
    5. 点击密码旁的复制按钮,粘贴到密码管理器或注册表单中。

    生成原理

    • 随机源:只使用 crypto.getRandomValues,从不使用 Math.random。
    • 没有取模偏差:用 random % poolSize 选字符会让某些字符的出现概率略高。本工具的做法是,落在不均匀尾部(2^32 除以字符池大小的余数部分)的 32 位随机值会被丢弃并重新抽取。这就是拒绝采样,能保证每个字符出现的概率完全相同。
    • 每种类型都会出现:先从每种选中的类型中各抽一个字符,其余字符从完整的字符池中抽取,最后用 Fisher-Yates 算法打乱整个序列。
    • 熵:按 长度 × log2(字符池大小) 显示。这是近似值,因为保证每种类型都出现会让实际值略低一点。
    • 强度等级:低于 40 位为弱,低于 60 位为一般,低于 80 位为良好,80 位及以上为非常强。
    • 字符池:26 个小写字母、26 个大写字母、10 个数字和 25 个符号(!@#$%^&*()-_=+[]{};:,.?/~)。

    示例

    设置 字符池大小 熵 强度
    8 位纯数字 10 约 26.6 位 弱
    12 位字母和数字 62 约 71.4 位 良好
    16 位,全部类型 87 约 103.1 位 非常强
    24 位,全部类型 87 约 154.6 位 非常强

    比起单个密码有多长,每个网站使用不同的密码更重要,所以请把生成的密码保存在密码管理器中。

    常见问题

    生成的密码会被发送或保存吗?

    不会。密码在你的浏览器标签页内生成,从不离开页面。关闭页面后就会消失,所以请立即保存到密码管理器中。

    为什么不直接用 Math.random?

    Math.random 并不是为不可预测性而设计的。本工具调用 crypto.getRandomValues,它使用操作系统提供的密码学安全随机源。

    熵的位数是什么意思?

    熵表示攻击者需要在多少个等可能的密码中猜测,用 2 的幂来表示。每多 1 位,搜索空间就翻一倍。本工具把 80 位及以上标为非常强。

    什么时候该排除易混淆字符?

    需要手动输入或口头念出密码时。它会去掉 I、l、1,以及数字 0 和字母 O、o。代价是字符池略小,熵也会略低。

    没找到想要的工具?