上传文件
  1. base64hub
  2. 密钥与哈希
  3. 随机 Base64 生成器

随机 Base64 生成器

选择随机字节数和输出格式,即可得到用于令牌、盐值、ID 和测试数据的安全随机字符串。这些值来自浏览器的密码学随机数生成器,不会被存储。

免费 无需注册,不限次数 本地 不上传任何内容 批量 每次点击最多 1000 个值 更新于 2026年10月27日

熵 –长度 –

使用浏览器的密码学安全随机数生成器 crypto.getRandomValues 生成。不存储、不发送任何内容。

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何生成随机 Base64

  1. 把 字节 设为你需要的随机量,范围 1 到 4096。默认的 32 字节就是 256 位。
  2. 选择 格式:Base64、Base64URL(URL 安全,无填充)或 hex。选 Base64 时还可以勾选 不填充(=)。
  3. 设置 数量,一次生成多个值,最多 1000 个,每行一个。
  4. 复制输出、下载为文本文件,或点击 重新生成 得到一组新值。输出下方的 熵 和 长度 显示随机位数和字符数。

如果需要特定格式的密钥,比如 Laravel 的 APP_KEY 或 AES-256 密钥,请使用顶部的某个 预设;Base64 密钥生成器 对每个预设都有说明。

输出会有多长

随机性在于字节,格式只决定它们怎么写出来。Base64 每个字符承载 6 位,hex 只有 4 位,所以同样的强度下 hex 总是更长:

字节位Base64Base64,无填充Base64URLHex
86412111116
1612824222232
2419232323248
3225644434364
4838464646496
64512888686128

能被 3 整除的字节数(24、48)完全不产生 =,所以带填充和无填充两列相同。值要放进 URL、文件名或 Cookie 时请用 Base64URL,因为 + 和 / 在这些地方需要转义。

该用多少字节

  • 唯一 ID、请求 ID、上传文件名: 16 字节(128 位)。猜中或撞上一个值在实际中不用担心。
  • 会话令牌、API 令牌、密码重置链接: 32 字节。多出来的余量只多花大约 20 个字符。
  • 密码哈希的盐值: 通常推荐 16 字节;盐值不需要保密,只需要唯一。
  • 测试数据: 多大都行,用 数量 一次就能生成一千个值填满一个文件。

随机字符串的强度只取决于它的字节数。为了塞进某个字段而把 44 个字符的值截成 20 个字符,会丢掉一半以上的熵,所以应该改选更小的字节数,并保留完整输出。

在终端或代码中实现

下面这些都会生成 32 个随机字节的 Base64(其中 secrets.token_urlsafe 使用不带填充的 URL 安全字母表):

openssl rand -base64 32
head -c 32 /dev/urandom | base64
import base64, secrets

print(base64.b64encode(secrets.token_bytes(32)).decode())
print(secrets.token_urlsafe(32))

在 Node.js 中,crypto.randomBytes(32).toString("base64url") 会得到 URL 安全形式。OpenSSL 有个坑:超过 48 字节时,openssl rand -base64 会在 64 个字符处换行,所以 64 字节的值会输出成两行。要输出单行,请用 openssl rand 64 | openssl base64 -A,或者在写入配置文件前去掉换行符。更多用法见 OpenSSL 和 Python 页面。

常见问题

这个随机生成器用来生成密码和令牌够安全吗?

够。它使用浏览器的密码学安全随机数生成器 crypto.getRandomValues。凡是需要保密的东西都不要用 Math.random(),它的设计目标并不是不可预测。

怎样得到正好 N 个字符的随机 Base64 字符串?

选择 N × 3 ÷ 4 个字节。字节数能被 3 整除时没有填充,所以 33 字节正好是 44 个字符,48 字节是 64 个。其他情况下勾选 不填充(=),长度就是 ⌈4 × 字节数 ÷ 3⌉。

生成的两个值会不会重复?

理论上会,但只要有 16 字节(128 位)或更多,概率就可以忽略:大约要生成 2^64 个值,碰撞才变得可能。这也是为什么随机唯一 ID 通常至少用 16 字节。

这些值会被保存到哪里吗?

不会。在你复制或下载之前,它们只保存在这个标签页的内存中,而且除 Cloudflare 的浏览量统计外,页面无法发起网络请求。刷新页面,它们就没了。