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

导入JWK格式EC P-256公钥时提示密钥用法错误的原因

错误原因分析

这个错误的核心问题是:ECDH公钥不允许将deriveKey作为自身的密钥使用权限。

在Web Crypto API的规则里,ECDH密钥对的分工明确:

  • 私钥拥有deriveKey/deriveBits权限,用于结合对方的公钥来派生新密钥;
  • 公钥的作用是提供给对方的私钥进行密钥派生,它自身并不具备主动执行deriveKey操作的权限。

你的代码存在两处重复的错误:

  1. JWK对象里的key_ops字段指定了["deriveKey"];
  2. 调用importKey时最后一个参数也传了["deriveKey"]。

只要把这两处的权限改为空数组,或者直接移除key_ops字段(公钥默认不需要指定主动操作权限),就能正常导入:

修正后的代码示例:

await crypto.subtle.importKey(
    "jwk",
    {
      kty: "EC",
      crv: "P-256",
      ext: true,
      x: "mRBuuxrvM7xy2oc4xZkw_i0JyIiIp_b0Zmnb1RYKZcg",
      y: "emhIhswnvIHICDtkWx4LLWy3HcN-is2l1oN9-r4_ChQ"
      // 移除key_ops字段,或者设为[]
    },
    { name: "ECDH", namedCurve: "P-256" },
    true,
    [] // 公钥不需要指定deriveKey权限
  );

之后你可以用自己的ECDH私钥,结合这个导入的公钥来调用deriveKey完成密钥派生操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:05:36