You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PyJWT的EdDSA算法编码遇InvalidKeyError问题求助

解决EdDSA算法JWT编码的InvalidKeyError问题

问题出在你直接传入了字符串格式的私钥,但python-jwt库的EdDSA算法要求传入加载后的椭圆曲线私钥对象,而非原始的PEM字符串。以下是修正方案:

步骤说明

  1. 确保安装依赖库:cryptography是python-jwt处理EdDSA密钥的底层依赖,需提前安装
  2. 使用cryptography加载PEM格式的私钥,转换为库要求的EllipticCurvePrivateKey对象
  3. 将加载后的密钥对象传入jwt.encode方法

修正后的代码

首先安装依赖:

pip install cryptography pyjwt

编码代码:

from cryptography.hazmat.primitives import serialization
import jwt

# 替换为你的实际PEM格式私钥,注意去掉不必要的转义符,保留正确的换行
private_key_pem = "-----BEGIN PRIVATE KEY-----\n[真实密钥内容]\n-----END PRIVATE KEY-----"

# 加载私钥(无密码则传password=None,有密码则传入对应字节串如b"your_key_password")
private_key = serialization.load_pem_private_key(
    private_key_pem.encode(),
    password=None
)

# 执行JWT编码
encoded_jwt = jwt.encode({"some": "payload"}, private_key, algorithm='EdDSA')
print(encoded_jwt)

额外注意事项

  • 确认你的私钥是Ed25519/Ed448类型的EdDSA密钥,而非其他椭圆曲线(如P-256)密钥
  • 私钥字符串中的换行符\n必须正确,否则加载时会失败
  • 若私钥设置了加密密码,需在load_pem_private_key中传入对应的password参数

内容的提问来源于stack exchange,提问作者Mukai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:01:55