SECRET 密钥生成器
生成各类应用密钥:JWT Secret、API Key、盐值等。
隐私安全:所有处理均在您的浏览器本地完成,数据绝不上传类型预设
生成参数
各类密钥推荐长度
| 使用场景 | 推荐最小字节数 | 建议 |
|---|---|---|
| API Key / 访问令牌 | 16 | 至少 16 字节(128 位),推荐 24~32 字节随机串 |
| JWT Secret(HS256) | 32 | RFC 7518 要求密钥长度 ≥ 摘要长度,HS256 建议 ≥32 字节 |
| JWT Secret(HS512) | 64 | HS512 摘要为 64 字节,建议密钥 ≥64 字节 |
| 会话 ID / CSRF Token | 16 | 建议 16~32 字节,需保证不可预测且一次性使用 |
| 加密盐值(Salt) | 16 | 建议 16 字节以上,每个用户独立随机生成 |
| TOTP 两步验证密钥 | 20 | RFC 4226 要求 ≥128 位,推荐 20 字节(160 位) |
| OAuth Client Secret | 32 | 建议 32 字节以上,并定期轮换 |
提示:1 字节 = 8 bit,16 字节即 128 bit,是当前公认的对称密钥安全下限;密钥越长越安全,但也会占用更多存储与传输开销。
工作原理
- 1选择类型预设(API Key / JWT Secret / TOTP / 通用随机串),工具会自动填入该场景推荐的字节数、格式与前后缀。
- 2按需调整长度、输出格式、字符集、前缀后缀与连字符分组模式;字符型格式可勾选排除 0 O 1 l I 等易混淆字符。
- 3点击生成,浏览器调用 crypto.getRandomValues 取得真随机字节,再按所选格式编码;字符型格式使用拒绝采样保证每个字符等概率出现。
- 4界面实时给出随机部分的熵值(bit)与强度评级,并可对照下方的推荐长度指引确认是否足够安全。
- 5结果可逐条复制、一键复制全部,或导出为 .txt 文件;同一批次内自动去重,不会出现重复密钥。
常见问题
生成的密钥真的是随机的吗?会不会被预测?
工具使用浏览器提供的加密安全随机源 crypto.getRandomValues 取随机字节,该接口由操作系统熵池提供种子,属于密码学安全的伪随机数生成器(CSPRNG),不存在可被推算的固定种子或时间序列规律。字符型格式额外采用拒绝采样,避免取模带来的分布偏差。
密钥会被上传或记录吗?
不会。全部生成过程都在你的浏览器本地完成,页面不发起任何网络请求,断网也能正常使用;关闭页面后结果即消失,不会写入服务器。
JWT Secret 应该用多长?
RFC 7518 要求 HMAC 密钥长度不小于摘要长度:HS256 建议至少 32 字节(256 位),HS512 建议至少 64 字节(512 位)。长度不足会削弱签名强度,使用预设的 JWT Secret 即可获得 64 字节(512 位)随机密钥。
Base64、Base64URL 和 Hex 该怎么选?
Base64URL 不含 + / = 等需要转义的字符,适合直接放进 URL、HTTP 头或配置文件,是 API Key 的常见选择;Base64 兼容性最广,适合作为 JWT Secret;Hex 只含 0-9a-f,便于人工核对与写入环境变量,但同样字节数下字符更长。
TOTP 密钥为什么输出 Base32?
otpauth 规范约定两步验证密钥使用 RFC 4648 Base32 编码(仅含 A-Z 与 2-7),便于在 Google Authenticator 等应用中手动录入。本工具输出的 20 字节 Base32 密钥去除了 padding,可直接用于绑定两步验证。
自定义字符集太短会有什么问题?
密钥的强度取决于「长度 × 每个字符的熵」。字符集少于 16 个不同字符时,单字符熵会明显偏低,工具会给出提示;此时应扩充字符集或增加长度,建议随机部分总熵不低于 128 bit。