.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
相关产品推荐
相关产品推荐

