跳到主内容
UniKit

随机令牌生成器

用 crypto.getRandomValues 加拒绝采样生成均匀随机的令牌或密码,可选字符集、长度、批量数量并评估强度。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

24
5
字符集大小: 62强度: 非常强 · 熵 142.9 位
生成的令牌

这个工具能做什么

  • 给 API Key、Session ID、邀请码、一次性密码生成随机字符串:一次可以批量出多条,直接复制粘贴到配置里。
  • 需要给人念或手抄的密码,勾选「排除易混淆字符」,去掉 0 O 1 l I,少一半认错的机会。
  • 字符集可以自由组合:大小写字母、数字、符号,还能补自定义字符(比如只允许 -_ 这类 URL 安全符号)。
  • 生成前就能看到字符集大小和熵值,用数字判断「16 位够不够」,而不是凭感觉。

示例

输入

长度 24、数量 3、大小写字母 + 数字、排除易混淆字符

输出

字符集大小:57
熵:约 140.0 位(非常强)
令牌示例:cUyJ9UXbgiJ5DHRtTXvWxh8G
k4ekvEjEZRt7WemGZib5EWZo
4Epxb4T9PDTM26c4gAVvcWCB

令牌本身每次都是随机结果,上面只是其中一次的样例;字符集大小和熵是可复现的固定值(57 = 62 − 5)。

常见问题

这是真随机吗?够安全吗?

用的是浏览器提供的 crypto.getRandomValues,属于密码学安全的随机源,不是 Math.random。选取字符时还做了拒绝采样:对字符集大小 n 只接受 [0, floor(256/n)×n) 范围内的字节再取模,保证每个字符出现概率完全相等,不会因为取模偏差让某些字符更容易出现。

多少位算安全?

看熵值:45 位以下标「弱」,45–70 位「一般」,70–100 位「强」,100 位以上「非常强」。常见做法是 16 位以上的大小写字母加数字(约 95 位)就够日常使用,重要凭证建议 24 位以上。

为什么字符集大小比我勾选的字符数少?

因为字符会去重。自定义字符里如果填了已经勾选的字符(比如再加一个 a),它不会让字符集变大;勾选「排除易混淆字符」还会再减掉 5 个(0 O 1 l I)。所以 62 个字符排除后是 57 个。

自定义字符里能填空格吗?

不能。空格会被忽略,因为带空格的令牌复制粘贴时极容易被截断。其它可打印字符都可以加进去。

生成的令牌会被记录或上传吗?

不会。随机数由本机浏览器的加密接口产生,令牌只存在于当前页面内存里,不发往任何服务器,也不写入 localStorage。刷新页面就没了,请及时复制保存。

关键词:tokenpasswordrandomgenerator令牌密码随机安全cryptoentropy

同类工具