Использует ли EncryptedXml.EncryptData аутентифицированное шифрование? - PullRequest
0 голосов
/ 13 ноября 2018

Использует ли EncryptedXml.EncryptData аутентифицированное шифрование?Я использую этот алгоритм идентификаторов http://www.w3.org/2001/04/xmlenc#aes256-cbc.

Я знаю, что aes256-cbc не аутентифицирован, но System.Security.Cryptography.Xml.EncryptedXml выполняет какую-либо аутентификацию?Если нет, когда я выполняю аутентификацию, например, с помощью HMAC-SHA-512, как я могу передать это значение в XmlDocument?

Отличается ли http://www.w3.org/2001/04/xmlenc#rsa-1_5 в области аутентифицированного шифрования?

Моя реализация

public byte[] Encrypt(byte[] data, byte[] key)
{
    using (var symmetricAlgorithm = new RijndaelManaged())
    {
        symmetricAlgorithm.Key = key;

        var xmlDocument = new XmlDocument();
        var dataElement = xmlDocument.CreateElement("Data");
        dataElement.InnerText = Convert.ToBase64String(data);
        xmlDocument.AppendChild(dataElement);

        var encryptedElementData = (new EncryptedXml()).EncryptData(dataElement, symmetricAlgorithm, false);
        var encryptedData = new EncryptedData
        {
            Type = EncryptedXml.XmlEncElementUrl,
            EncryptionMethod = new EncryptionMethod(EncryptedXml.XmlEncAES256Url),
            CipherData = { CipherValue = encryptedElementData }
        };

        EncryptedXml.ReplaceElement(dataElement, encryptedData, false);

        using (var encryptedXmlStream = new MemoryStream())
        {
            xmlDocument.Save(encryptedXmlStream);
            return encryptedXmlStream.ToArray();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...