密钥 / 随机串生成

生成十六进制、Base64 随机密钥与 RSA 密钥对。

什么是密钥 / 随机串生成?

密钥/随机串生成工具用于在浏览器本地生成密码学安全的随机数据,包括十六进制随机字符串、Base64 编码的随机密钥,以及 RSA 公私钥对,常用作 API 密钥、JWT 签名密钥(如 HMAC secret)、加密算法的 key、或者需要一段不可预测随机值的场合。

为什么使用密钥 / 随机串生成?

很多开发场景需要一段"随机且不可预测"的字符串作为密钥,比如给 JWT 签名配置 HS256 密钥、给 AES 加密准备 32 字节的 key、或者给某个第三方服务生成 API Token。手动敲键盘"随便打一串字符"并不安全,容易重复或存在规律;使用密码学安全的随机数生成器(浏览器的 Web Crypto API)能保证生成结果具有足够的随机性和不可预测性,且生成过程完全在本地完成,不经过网络传输,密钥本身不会被泄露给第三方服务器。

使用示例

生成 AES 密钥

选择生成 32 字节(256 位)十六进制随机串,得到类似"a1b2c3d4e5f6..."(64 个十六进制字符)的结果,可直接作为 AES-256 加密的密钥使用。

生成 JWT 签名密钥

生成一段 Base64 编码的随机密钥,粘贴到后端 .env 文件的 JWT_SECRET 配置项中,用于 HMAC 签名 JWT token。

生成 RSA 密钥对

点击生成 RSA 2048 位密钥对,得到 PEM 格式的公钥(-----BEGIN PUBLIC KEY-----)和私钥(-----BEGIN PRIVATE KEY-----),公钥可分发给需要加密数据的一方,私钥需要自己妥善保存,用于解密或签名。

使用提示

私钥属于高度敏感信息,不要通过邮件、聊天工具明文发送或提交到代码仓库,建议使用环境变量或专门的密钥管理服务(如 KMS、Vault)存放。

常见问题

生成的密钥/随机串安全吗?
使用浏览器加密安全的随机数生成器 crypto.getRandomValues(RSA 密钥对使用 crypto.subtle.generateKey),可用于密钥、Token 等安全场景。
Hex / Base64 / 随机字符串该选哪种?
Hex 常用于密钥/Token 展示;Base64 更节省字符数适合直接当密钥使用;随机字符串可自定义字符集,适合生成易读的临时密码或标识符。
数据会上传服务器吗?
不会。所有随机数与密钥均在浏览器本地生成,不发起任何网络请求。
这里生成的随机数够安全吗,和真的密码学随机数一样吗?
是的,只要工具使用浏览器提供的 Web Crypto API(crypto.getRandomValues)而不是普通的 Math.random,生成的就是密码学安全的随机数,可以放心用于生成密钥;Math.random 不具备密码学安全性,不适合生成密钥。
生成的密钥会被记录或上传吗?
生成过程在浏览器本地完成,页面不会把生成的密钥发送到任何服务器,但请注意浏览器历史记录、剪贴板管理工具等本地环境也可能留下痕迹,敏感密钥用完后建议清空输入框。
RSA 密钥选多少位合适?
目前普遍建议至少使用 2048 位,安全性要求更高或长期使用的场景可选择 3072 或 4096 位,位数越大加解密速度越慢,但破解难度也越高。
生成的密钥丢了还能找回吗?
不能,工具不做任何存储,页面刷新或关闭后生成的内容就会丢失,请在生成后立即复制保存到安全的地方(如密码管理器),私钥丢失通常意味着无法再解密用该公钥加密过的数据。

相关工具

相关教程

← 返回工具箱· 数据均在浏览器本地处理,不上传服务器。