随机密码 · UUID · 随机数

使用浏览器加密级随机数(crypto.getRandomValues)生成,结果不会上传、不会记录。

密码生成器

等待输入

UUID v4

128 位通用唯一标识符,适用于数据库主键、请求追踪等。
—

随机整数

在指定区间内生成不重复的随机整数。
结果将显示在这里。

什么样的密码才算强:长度、随机与不复用

密码强度本质上就是熵,也就是攻击者平均要试多少次才能猜中。 熵随长度增长的速度远快于随字符种类增长的速度:多两个随机字符带来的搜索空间膨胀, 通常比强制加一个符号更大。所以优先级很清楚——先加长度,再谈复杂度。 16 位是稳妥的默认值,重要账号建议 20 位以上。

现实中最致命的往往不是密码短,而是密码复用。 撞库攻击拿着某个站点泄露的账号密码去试其他站点, 因此一个「很强但在两个网站都用过」的密码,比一个只在某处用一次的普通密码更危险。 用密码管理器可以彻底化解这个矛盾:每个网站都是一长串随机字符,你只需要记住一个主密码。

为什么要用生成器?因为人写不出随机。 本工具使用浏览器内置的加密级随机源 crypto.getRandomValues, 而不是 Math.random——后者是确定性算法,在特定条件下可以被预测。 生成过程完全在你的设备上完成,结果不上传、不写入本地存储,页面关闭即消失。

关于「保证包含每一类字符」这个选项:它能满足部分网站仍在要求的组成规则, 但会给输出加上约束,因此会略微降低熵。只有在网站明确要求时才勾选它。 同理,「包含易混淆字符(0O1lI)」默认关闭, 因为需要人工抄写或电话报读的密码里,0 与 O 的误读代价很高。

最后,如果你需要的不是「秘密」而是「标识」,请用 UUID v4: 122 个随机位,写成 36 个字符,在实际业务量级下的碰撞概率可以忽略, 适合做数据库主键、请求追踪 ID 与文件名。 它与密码的区别在于用途,不在于生成方式——两者都应该是真随机。

如果你打算自己实现类似的生成器,有两条原则不要违反:第一,随机源必须用加密级的 (浏览器 crypto.getRandomValues、Node 的 crypto.randomBytes), 绝不能用 Math.random 拼接;第二,不要用自写的「洗牌」或直接取模去从字符表里挑字符—— 取模会带来轻微偏斜,安全场景应使用拒绝采样这类无偏方法。 本站的生成逻辑遵循这两条,且全程在页面内执行,不落盘、不上传。

关于密码强度

  • 长度是最重要的因素:建议重要账号使用 16 位以上随机密码。
  • 不要在不同网站重复使用同一个密码,推荐搭配密码管理器使用。
  • 勾选“保证包含每一类”可确保所选字符类别都至少出现一次。
  • 本工具生成结果仅在页面内展示,不会写入本地存储或发送到服务器。