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

使用node-jose的ConcatKDF生成共享密钥提示EC公钥无效如何解决

问题原因

  • 核心错误:node-jose的密钥派生方法要求传入JWK类实例,你调用toJSON()将密钥序列化为了普通JS对象,无法通过算法的公钥有效性校验,直接触发了invalid EC public key报错。
  • 次要笔误:代码中定义Alice私钥变量时拼写错误,将alicePrivateKey写为alicPrivateKey,缺失字母e,后续也可能引发引用错误。

修复方案

直接使用密钥生成时返回的JWK实例参与派生即可,无需序列化处理,正确代码如下:

const jose = require('node-jose');
const index = require('node-jose/lib/algorithms/index');

const keystore = jose.JWK.createKeyStore();

const bobKey = await keystore.generate('EC', 'P-256');
const aliceKey = await keystore.generate('EC', 'P-256');

const props = {
  public: bobKey,
  length: 256
};

const result = await index.derive('ECDH-CONCAT', aliceKey, props);

如果你是从外部传入的序列化公钥JSON,需要先导入为JWK实例再使用:

// 假设bobPublicKeyJson是从其他端拿到的公钥序列化结果
const bobJWK = await keystore.add(bobPublicKeyJson);
const props = {
  public: bobJWK,
  length: 256
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:57:03