将加密ECDH公钥解析为JWK格式以将其与WebCrypto一起使用

时间:2016-07-01 00:56:14

标签: javascript encryption cryptography webcryptoapi jwk

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

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

我正在使用此公钥,ECDH算法和WebCrypto的SubtleCrypto接口实现客户端库加密数据。

要完成此操作,我必须导入公钥(使用nodejs加密生成),WebCrypto importKey method有一些格式选项可以执行此操作,但我可以使用它来处理非公共密钥。我注意到jwk比其他人更常用。

jwk的一个例子是

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

也许key-encoder-library可以提供帮助。尝试导出为PEM并检查是否有效。考虑使用node-webcrypto-ossl-lib创建密钥。 'jwk'格式在开发期间是真正的帮助。可以轻松克隆导出键,如下所示:

cloneK = JSON.parse( JSON.stringify( exportedKey ) )