1

我生成了一个 ECDH 密钥对,并从中获取了公钥。使用 nodejs 和加密库。

const ecdh = crypto.createECDH('secp384r1');
ecdh.generateKeys();
const publicKey = ecdh.getPublicKey('hex'); 

我正在实现一个客户端库来使用这个公钥、ECDH 算法和来自 WebCrypto 的SubtleCrypto接口来加密数据。

为了实现这一点,我必须导入公钥(使用 nodejs 加密生成),WebCrypto importKey 方法有一些格式选项可以做到这一点,但我可以让它不使用它们。我注意到这jwk比其他人更常用。

一个例子jwk

{  
  kty: "EC",
  crv: "P-256",
  x: "kgR_PqO07L8sZOBbw6rvv7O_f7clqDeiE3WnMkb5EoI",
  y: "djI-XqCqSyO9GFk_QT_stROMCAROIvU8KOORBgQUemE",
  d: "5aPFSt0UFVXYGu-ZKyC9FQIUOAMmnjzdIwkxCMe3Iok",
  ext: true,
}

那么如何将我的公钥解析为一个jwk对象。我的公钥如下所示: 04f8b2a6e9d2ffa424c3e7b6addf23112153920fd0209390da460f99e03bf8665052e72df4a0b7927381f1b026c98a3a2b348fdd10969875e6b0e86cb1f093a5fc07e49fbbbf091922ce71af17f4a79de03f6069836a7143b137be34451f162235

4

2 回答 2

1

我没有直接的答案,但您可能想查看https://github.com/PeculiarVentures/node-webcrypto-ossl,它为您提供了 node.js 中的 webcrypto 接口。如果您不想直接使用它,您可以在其 JWK 处理中找到您问题的答案。

于 2016-07-01T04:42:54.043 回答
1

也许密钥编码器库可以提供帮助。尝试导出为 PEM 并检查是否有效。考虑使用 node-webcrypto-ossl-lib 创建您的密钥。'jwk' 格式在开发过程中是一个真正的帮助。可以像这样轻松克隆导出的密钥:

cloneK = JSON.parse( JSON.stringify( exportedKey ) )
于 2016-09-19T16:56:16.823 回答