本工具生成密码学安全的密钥材料。与现有的随机字符串/密码生成器(使用 Math.random(),不适合密钥)不同,本工具由熵位驱动、基于 CSPRNG。
熵位驱动输入。 你指定目标熵(位数,默认 256,步长 8)——即你想要的安全强度——工具自动算出字节数(bytes = ceil(bits/8))。这是密钥的正确心智模型:JWT HS256 密钥需要 256 位熵,无论用多少字符表示。不要想"要几个字符",要想"要多少安全"。
两条输出分支:
字节编码(默认——自定义字母表留空)。用 crypto.randomBytes() 生成 ceil(entropyBits/8) 个随机字节,并以三种编码并排呈现——hex、base64、base64url——便于复制消费端期望的格式。每个字节贡献 8 位熵,因此实际熵始终等于请求值。
自定义字母表(填写自定义字母表)。每字符采样 crypto.randomInt(字母表大小)——由 Node 内部拒绝采样,无模偏差,无需手写拒绝循环。实际熵为 长度 × log₂(字母表大小),可能小于请求值(如 32 符号字母表 × 10 字符 = 50 位,而非 256);此时工具用红字警告你,因为短的自定义字母表字符串可能远比看起来弱。
为什么三种编码并排? 256 位密钥是 64 个 hex 字符、约 44 个 base64 字符或 43 个 base64url 字符。不同系统期望不同格式;并排展示三种让你无需重复运行即可正确选择。
适用场景:AES-256 密钥、HMAC 密钥、JWT 签名密钥、API 密钥、会话密钥、任何攻击者不可猜测的值。crypto.randomBytes() 和 crypto.randomInt() 取自操作系统 CSPRNG——绝不使用 Math.random()。