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

WebCrypto使用AES-GCM密钥解包RSA-OAEP密钥抛出DOMException问题

报错原因

你触发错误的核心原因是待解包的RSA私钥用途配置不合法:

  • RSA-OAEP属于非对称加密算法,用途是严格区分的:公钥仅支持encrypt权限,私钥仅支持decrypt权限
  • 你生成RSA密钥对时,虽然传入的用途数组是["encrypt", "decrypt"],但Web Crypto API会自动拆分权限:公钥拿到encrypt权限,私钥实际仅拿到decrypt权限
  • 你在unwrapKey的最后一个参数中,给私钥指定了不支持的encrypt权限,浏览器校验用途匹配失败就抛出了对应异常

修复方案

只需要把unwrapKey的最后一个参数(待解包密钥用途)改为仅包含decrypt即可,修改后的代码段如下:

var unwrapped = await window.crypto.subtle.unwrapKey(
    "jwk",                     
    wrappedRSAKey,             
    AESkey,                    
    {name: "AES-GCM",iv: iv},  

    {                      
      name: "RSA-OAEP",
      hash: "SHA-256"
    },
    true,                  
    ["decrypt"] // 仅保留RSA私钥支持的decrypt权限
  );

额外校验点

如果修改后仍有报错,可以排查这两个点:

  • 确认解包时使用的iv和封装时用的是完全相同的实例,没有被意外修改
  • 确认wrappedRSAKey没有被截断或篡改,还是wrapKey返回的原始ArrayBuffer

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:15:04