C# 根据EncryptionMethod节点算法属性选择正确的不对称/对称算法
是否有内置的.NET API可以解析加密XML中EncryptionMethod元素的算法属性,并确定解密数据时使用的正确非对称算法/对称算法 下面是我要解密的一个加密XML片段示例:C# 根据EncryptionMethod节点算法属性选择正确的不对称/对称算法,c#,.net,xml,encryption,C#,.net,Xml,Encryption,是否有内置的.NET API可以解析加密XML中EncryptionMethod元素的算法属性,并确定解密数据时使用的正确非对称算法/对称算法 下面是我要解密的一个加密XML片段示例: <xenc:EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> <xenc:EncryptionMethod Algor
<xenc:EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
<xenc:CipherData>
<xenc:CipherValue>fWDq0kmaii...U9Tng==</xenc:CipherValue>
</xenc:CipherData>
</xenc:EncryptedData>
我一直在使用System.Security.Cryptography.Xml.EncryptedData.NET类,但没有看到任何子属性或方法可以帮助解析在Algorithm属性中找到的URI,并选择适当的对称算法。在本例中,System.Security.Cryptography.RijndaelManaged的密码为CBC,块大小为128
是否有任何内置的.NET API方法可以正确识别和配置解析加密XML所需的Asymmetricalgorithm/SymmetricAlgorithm?使用System.Security.Cryptography.XML.EncryptedXml类上的Reflector,我在System.Security.Cryptography.CryptoConfig类中找到了对名为CreateFromName的方法的引用。这几乎是我想要的一切。给定任何SymmetricAlgorithm的URI,它将为您构造和配置算法,请参见下面的我的注释。但是,它不适用于指示用于密钥传输的非对称算法的任何URI
我发现,对于许多人的需要,EncryptedXml类可能会为您解密文档,因此,通过解析URI构建您自己的算法对象的这一步骤是不必要的。我相信我的特定用例可能是例外,但至少我现在可以使用EncryptedXml使用的同一帮助器类,至少在用于块加密/解密的对称算法的情况下是如此。配置需要不对称算法/对称算法意味着什么?i、 你想做什么?我认为以下文档可能会有所帮助:我的意思是按照算法属性的URI中指定的配置算法;就http://www.w3.org/2001/04/xmlencaes128-cbc,CipherMode属性应设置为CBC,BlockSize属性应设置为128。另一个有效的URI可能以aes256 cbc或甚至tripledes-cbc结尾。您提供的MSDN URL确实包含一种我正在寻找的算法,尽管它从对称算法到URI,而不是相反。它只执行对称算法类型,而不执行任何非对称算法类型。我只是认为.NET必须有一些内置的API调用来为您实现这一点。实际上,我可能只是运气好,它正在从URI解析算法的名称;但是,我对它是否正确配置没有信心。