当前位置: 首页 > 知识库问答 >
问题:

从导入的 ECDH 私钥派生公钥

甘西岭
2023-03-14

我有这样的代码来导入一个ECDH键:

const curve = await crypto.subtle.importKey(
  "pkcs8",
  keyData,
  { name: "ECDH", namedCurve: "P-256" },
  true,
  ["deriveBits"]
);

这是可行的,但是它只返回私钥,而不是整个密钥对。如何从私钥中导出公钥?

共有1个答案

姚正真
2023-03-14

我最初认为另一个问题的答案是RSA特有的,但事实并非如此,同样的技术也适用。这就是我最终得到的代码。

async function getPublicKey(privateKey){
  const jwk = await crypto.subtle.exportKey("jwk", privateKey)
  delete jwk.d;
  return await crypto.subtle.importKey("jwk", jwk, { name: "ECDH", namedCurve: "P-256" }, true, ["deriveBits", "deriveKey"])
}

这有点笨拙,如果有更好的方法,请让我知道。

 类似资料:
  • 问题内容: 我试图从私钥生成公共ECDSA密钥,但是在Internet上如何进行此操作方面,我还没有找到太多帮助。几乎所有内容都是根据公共密钥规范生成公共密钥的,我不知道该如何获得。到目前为止,这是我汇总的内容: 但是,在运行时,出现以下错误: 我究竟做错了什么?有没有更好/更简便的方法可以做到这一点? 编辑:我设法获得一些代码进行编译,但不能正常工作: 当我运行它时,它会生成一个publicKe

  • 我正在尝试在BouncyCastle中导入公共和私有ECDH密钥。为了导入公钥,我使用了下面的C#代码,代码运行良好: 公钥:042E3E5CCF6B9AB04BE7A22F3FACCDE73C87E87155394A34815408A896CA18A374DAC669AF36220FC863767F4AF47507C5BC221FC4A19874DAF39B074E3EB8 私钥:be3f9bf

  • 我想通过RSACryptServiceProvider签名和验证数据 为此,我需要公钥和私钥。 在我的项目中,我将公钥和私钥存储在XML文件中。 有一次,我生成了我的公钥和私钥 在上面,我展示了“通过公钥验证数据” 我的SignData方法类似。 在那里, 我的问题是:举个例子,我认识到;通过crt/pem/cert等导入公钥和私钥。证书文件。在那里我存储了XML文件。 我的解决方案错了吗? 第二

  • 我试图从私钥中生成一个公共ECDSA密钥,但我还没有在互联网上找到多少关于如何实现这一点的帮助。几乎所有的事情都是为了从公钥规范生成公钥,我不知道如何得到它。到目前为止,我总结了以下内容: 但是,在运行时,我会出现以下错误: 我做错了什么?有更好/更简单的方法吗? 编辑:我已经设法编译了一些代码,但它不能正常工作: 当我运行它时,它会生成一个公钥,但它不是私钥对应的公钥。

  • 我以这种格式将私钥保存在DB中。 我需要从中提取公钥。openssl\u pkey\u get\u详细信息需要资源,但如何从字符串创建资源? 我试过这个 错误是openssl\u pkey\u get\u details()期望参数1是资源,给定布尔值 编辑1: 我试图从@kbarborak bellow获得解决方案,但$pk\u get是错误的: var_转储的输出为:

  • 我正在Erlang中创建一个应用程序,给定一个RSA私钥,它可以返回RSA公钥和与该priv密钥相关联的x509公钥。 ----只是一个更新---- 在花了一些时间了解x509并阅读了Erlang public_key文档后,我找到了一个解决方案: 如果我可以通过简单地获取模数和publicExponent,从“RSaprivateKey”生成“RSapublicKey”,那么生成这两个键的代码如