C# 需要解密SAML响应

C# 需要解密SAML响应,c#,encryption,saml-2.0,C#,Encryption,Saml 2.0,我需要使用C#集成单点登录,我从IdP获得SAML响应,我需要解密SAML响应(加密:TripleDes)。我需要在证书中使用私钥解密 当我尝试使用证书密钥解密时,它给出了一个错误:密钥大小无效。是否有标准方法将私钥转换为三元组的有效大小?e、 g 我应该使用前24个字节还是使用MD5哈希?是否有任何开放库可用于解密C#中的SAML响应 下面是我从IdP收到的XML: <saml:EncryptedAssertion xmlns:saml="urn:oasis:names:tc:SAML:

我需要使用C#集成单点登录,我从IdP获得SAML响应,我需要解密SAML响应(加密:TripleDes)。我需要在证书中使用私钥解密

当我尝试使用证书密钥解密时,它给出了一个错误:密钥大小无效。是否有标准方法将私钥转换为三元组的有效大小?e、 g

我应该使用前24个字节还是使用MD5哈希?是否有任何开放库可用于解密C#中的SAML响应

下面是我从IdP收到的XML:

<saml:EncryptedAssertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
  <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
    <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
      <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
        <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
          <X509Data>
            <X509Certificate>Signing certificate goes here==</X509Certificate>
          </X509Data>
        </KeyInfo>
        <CipherData>
          <CipherValue>Cipher value goes here==</CipherValue>
        </CipherData>
      </EncryptedKey>
    </KeyInfo>
    <CipherData>
      <CipherValue>cipher value goes here=</CipherValue>
    </CipherData>
  </EncryptedData>
</saml:EncryptedAssertion>

例外情况出现在第二行。我目前没有使用任何第三方工具。

请尝试将您的代码片段切换到以下位置:

byte[] inputArray = Convert.FromBase64String(EncryptedData);
var cryptoProvider = (RSACryptoServiceProvider)cert.PrivateKey;

您是否为saml使用任何库?不,我没有为saml使用任何库。我不知道.NET有任何SAML库。我是否可以建议您查找一个?您的代码没有意义。什么是加密数据?什么是
证书
?假设
cert
是证书-证书不包含私钥,因此使用
cert.PrivateKey
从证书中获取私钥是不可能的,甚至假设它是可能的,将
cert.PrivateKey
强制转换为
TripleDESCryptoServiceProvider
也没有任何意义。嗨,Daniel-是的,请建议查找库。
byte[] inputArray = Convert.FromBase64String(EncryptedData);
var cryptoProvider = (RSACryptoServiceProvider)cert.PrivateKey;