Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据EncryptionMethod节点算法属性选择正确的不对称/对称算法_C#_.net_Xml_Encryption - Fatal编程技术网

C# 根据EncryptionMethod节点算法属性选择正确的不对称/对称算法

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

是否有内置的.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 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解析算法的名称;但是,我对它是否正确配置没有信心。