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

.NET 6中Graph API订阅通知RSA解密报“Access Denied”求助

.NET 6解密Graph API订阅通知对称密钥遇"Access Denied"问题

我在.NET 6环境下尝试解密从Graph API接收的订阅通知中的对称密钥,初始代码如下:

X509Certificate2 cert = new(pfxData, "pass"); //pfx文件字节数组
var rsa = cert.GetRSAPrivateKey();
byte[] encryptedSymmetricKey = Convert.FromBase64String("dataKey"); //来自Graph API的密钥
byte[] decryptedSymmetricKey = rsa.Decrypt(encryptedSymmetricKey, fOAEP: true); //此处抛出异常

使用fOAEP参数时出现编译错误,于是改为RSAEncryptionPadding.OaepSHA256,现在抛出**"Access Denied"**错误:

byte[] decryptedSymmetricKey = rsa.Decrypt(encryptedSymmetricKey, RSAEncryptionPadding.OaepSHA256);

异常信息:

Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException: 'Access denied.'

我需要解密该对称密钥以获取Graph API负载中的数据,寻求解决办法。

已尝试的方案

  • 导出并重新导入私钥,仍抛出相同异常:
var newKey =  rsa.ExportPkcs8PrivateKey();
RSA rsa1 = RSA.Create();

rsa1.ImportPkcs8PrivateKey(newKey, out _);
rsa1.Decrypt(.....) //仍抛出相同异常
  • 尝试重置密钥用途,但返回的密钥无Decrypt方法:
    我的证书KeyUsage显示为AllUsages,理论上支持解密操作,尝试重置密钥用途:
var rsa3 = ResetKeyUsage(((RSACng)rsa1).Key) 
rsa3.Decrypt() //返回的密钥没有Decrypt方法

不确定该操作是否正确。

参考文档:Microsoft Graph - 包含资源数据的更改通知(C#)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:57:13