0

是否有内置的 .NET API 可以解析加密 XML 中元素的Algorithm属性并识别正确的/以用于解密数据?EncryptionMethodAsymmetricAlgorithmSymmetricAlgorithm

这是我将解密的示例加密 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 并选择适当的子属性或方法SymmetricAlgorithm(在本例中,System.Security.Cryptography.RijndaelManaged使用 a CipherModeofCBC和 a BlockSizeof 128)。

是否有任何这样的内置 .NET API 方法可以正确识别和配置所需的AsymmmetricAlgorithm/SymmetricAlgorithm解析加密的 XML?

4

1 回答 1

1

在类上使用反射器,我发现对类上System.Security.Cryptography.Xml.EncryptedXml命名的方法的引用。这几乎是我一直在寻找的一切。给定 any 的 URI ,它将为您构造和配置(请参阅下面的我的评论)算法。但是,它不适用于任何指示用于密钥传输的 URI。CreateFromNameSystem.Security.Cryptography.CryptoConfigSymmetricAlgorithmAsymmetricAlgorithm

我发现的一件事是,对于许多人的需求,EncryptedXml该类可能会为您完成文档的解密,因此通过解析 URI 构建您自己的算法对象的这一步骤将是不必要的。我相信我的特定用例可能是例外的,但至少我现在可以使用正在使用的相同帮助程序类EncryptedXml(至少在SymmetricAlgorithm用于块加密/解密的情况下)。

于 2013-03-07T20:23:22.570 回答