关于此工具
加密密钥、API 密钥和 Bearer 令牌本质上都需要同一样东西:一串谁也无法猜到的字节。`Math.random()` 并非为此设计——它是一个快速但可预测的伪随机数生成器,适合用于动画或洗牌,而非安全场景。本工具改用 `crypto.getRandomValues()`,即 Web Crypto API 提供的密码学安全随机数生成器,因此生成的字节适合作为真正的密钥材料:AES 密钥、HMAC 密钥、会话令牌,或任何需要抵御猜测的用途。
选择位长——128 和 256 是常见的 AES 密钥长度,512 和 1024 适合更大的 HMAC 密钥或高熵令牌——然后选择编码方式。Hex 最通用(每字节两个字符,便于人工核对),Base64 紧凑且被广泛支持,Base64URL 则将 `+`、`/` 和 `=` 替换掉,使结果可以安全地用于 URL、文件名或 JWT 而无需转义。下方单独的 API 密钥区域会生成 Stripe 风格的密钥——一个短前缀加下划线,再加一段随机的 Base64URL 字符串——这正是众多 SaaS API 用于其 Bearer 令牌的格式。
一切都在您的浏览器中完成:此处生成的任何密钥或令牌都不会被发送到任何地方。这也意味着一旦离开页面,内容不会被记录或恢复,请务必在离开前复制您的密钥。
常见问题
AES 密钥需要多少位?
AES 支持 128、192 或 256 位密钥。AES-256(使用此工具生成的 256 位十六进制或 base64 输出)是现代最常见的选择,被认为在可预见的未来内都是安全的,即使面对仅会将其有效强度大致减半的理论性量子计算攻击也是如此。
base64url 和普通 base64 一样吗?
不,它们相近但不相同:base64url 将 `+` 和 `/` 字符替换为 `-` 和 `_`,并且通常省略末尾的 `=` 填充符,因此生成的字符串可以直接安全地用于 URL 或文件名,无需转义——否则普通 base64 中的特殊字符在 URL 中需要进行百分号编码。