# JWK 转换器

在 PEM 和 JSON Web Key 之间转换密钥。粘贴 PKCS #8、PKCS #1 或 SEC1 格式的 PEM 私钥、公钥或证书，即可获得对应的 JWK；也可以粘贴最多包含 20 把密钥的 JWK 或 JWKS，获取 PKCS #8 和 SPKI PEM。支持 RSA、EC（P-256、P-384、P-521、secp256k1）、Ed25519、Ed448、X25519 和 X448 密钥；每把密钥都会显示其类型和 RFC 7638 指纹。

## 常见问题

### 转换器如何判断转换方向？

以 { 开头的输入会被识别为 JWK 或 JWKS，并转换为 PEM。包含 -----BEGIN 行的输入会被识别为 PEM，并转换为 JWK。其他输入都会被拒绝，并提示所需的格式。

### 支持哪些 PEM 输入？

支持未加密的 PKCS #8（BEGIN PRIVATE KEY）、PKCS #1（BEGIN RSA PRIVATE KEY）和 SEC1（BEGIN EC PRIVATE KEY）格式私钥；SPKI（BEGIN PUBLIC KEY）或 PKCS #1（BEGIN RSA PUBLIC KEY）格式公钥；以及 X.509 证书（会转换其中的公钥）。粘贴多个 PEM 块时，优先采用第一个私钥；如果没有私钥，则采用第一个公钥或证书。

### 私钥会生成什么结果？

PEM 私钥会生成包含所有成员的私有 JWK，例如 RSA 密钥的 d、p、q、dp、dq 和 qi，并同时生成对应的公有 JWK。请只分享公有 JWK，因为私有 JWK 包含密钥秘密材料。

### 可以转换整个 JWKS 吗？

可以。粘贴包含 keys 数组且最多有 20 把密钥的文档，例如来自 jwks_uri 端点的文档，即可将每把密钥转换为 PEM，并显示其索引和 kid。通过 d 成员识别出的私有 JWK 会同时返回 PKCS #8 私钥和 SPKI 公钥。

### 为什么无法转换对称密钥？

kty 为 oct 的密钥是供 HMAC 或 AES 使用的纯密钥字节，没有 PEM 表示形式。请直接使用它们，例如在 JWT 生成器中，oct JWK 可用作 HMAC 密钥。

### kid 选项有什么作用？

启用后，密钥的 RFC 7638 指纹会作为 kid 成员添加到生成的 JWK 中。这样密钥就有了稳定标识符，验证方可以将它与 JWT 的 kid 标头进行匹配。

### RFC 7638 指纹是什么？

它是对密钥必需的公开成员按固定顺序排列后计算出的 base64url SHA-256 哈希值，例如 RSA 密钥的 e、kty 和 n，或 EC 密钥的 crv、kty、x 和 y。无论以 PEM 还是 JWK 格式存储，同一密钥的指纹始终相同。

### 支持加密密钥或 OpenSSH 密钥吗？

不支持。加密的 PEM 密钥必须先移除口令，例如使用 openssl pkey -in encrypted.pem -out key.pem。OpenSSH 私钥必须先用 ssh-keygen 转换为 PEM，才能在此处读取。

### 支持哪些密钥类型？

支持 RSA、使用 P-256、P-384、P-521 或 secp256k1 曲线的 EC，以及 OKP 类型 Ed25519、Ed448、X25519 和 X448。DSA 和 Diffie-Hellman 密钥没有 JWK 格式，因此系统会拒绝并说明原因。

### 我的私钥会被保留吗？

不会。密钥只会在处理此请求时于内存中转换，不会被记录或保存。建议在线转换公钥；生产环境中的私钥仅在你控制的系统上处理。

在这里投放广告？

[给我们发邮件](mailto:hi@dennn.is?subject=%E5%9C%A8%20OneClick%20Pro%20%E4%B8%8A%E6%8A%95%E6%94%BE%E5%B9%BF%E5%91%8A)

[广告 适用于 WordPress 的智能体就绪型插件套件。](https://sleekwp.com/?ref=oneclickpro)
