密钥生成器
用安全随机数生成 JWT、AES、Laravel、Rails、Django 以及会话 Cookie 所需的密钥,长度和编码都符合各框架的要求,并显示熵的位数。
熵 256 位 · 每个值 43 个字符
使用 crypto.getRandomValues 在本地生成,不会发送或存储任何内容。请把密钥放在环境变量或密钥管理服务中,切勿写进源代码。
什么是 密钥生成器?
框架和库需要特定格式的随机密钥:JWT HS256 用 256 位的 Base64url 字符串,AES-256 用 32 个十六进制字节,Laravel 的 APP_KEY 用 base64: + 32 字节,Rails 的 secret_key_base 用 128 个十六进制字符,Django 的 SECRET_KEY 用 50 个字符。选择 用途,工具就会生成长度和编码都正确的密钥,你也可以自行定制格式。
如何使用 密钥生成器
- 选择 用途,例如 JWT HS256 密钥(256 位,Base64url) 或 Laravel APP_KEY。
- 如有需要,调整格式和 随机字节数 / 长度(这会切换为自定义)。
- 点击 重新生成,直到得到满意的密钥,然后复制到你的环境变量中。
示例
Purpose: JWT HS256 secret (256 bits, Base64url)
-IXerdjEBBrFmWvMzQ0izB3-w1aweuEukH9SlJBWmwE
256 位熵。内容是随机的,你得到的密钥会不同。
何时使用 密钥生成器
适合设置新环境、轮换已泄露的密钥或配置 JWT 签名。对于非对称签名(RS256、ES256),你需要的是密钥对,而不是共享密钥。切勿把密钥提交到 Git;请把它们放在环境变量或密钥管理服务中。
密钥生成器 的工作原理
所有密钥都来自 crypto.getRandomValues。基于字节的预设会抽取算法所需的确切字节数(AES-128 为 16,AES-256 和 HS256 为 32,HS512 和 Rails 为 64),并编码为十六进制、Base64 或 Base64url。Django 的密钥是从字母和数字中均匀选取的 50 个字符(约 298 位)。熵一行显示以位计的强度,低于 128 位时会发出警告。
常见用例
- 为新的 Laravel 部署设置 APP_KEY
- 创建 JWT HS256 签名密钥
- 生成用于加密静态数据的 AES-256 密钥
- 在泄露后轮换 Django 或 Rails 的密钥
安全提示
密钥在本地生成,不会发送到任何地方。拥有密钥的人可以伪造令牌或解密数据,因此请只把它存放在环境变量或密钥管理服务中。
常见问题
JWT HS256 的密钥应该多长?
至少 256 位(32 字节),即 SHA-256 输出的大小,这是 RFC 7518 的建议。HS512 应使用 512 位。
这和运行 php artisan key:generate 一样吗?
格式上一样:Laravel 的命令同样会创建 32 个随机字节,进行 Base64 编码,并加上 base64: 前缀。
如果更改正在运行的应用的密钥会怎样?
现有的会话、签名 Cookie、令牌,以及用旧密钥加密的所有内容都会失效或无法读取。请谨慎规划轮换。