Показать сообщение отдельно
Старый 01.11.2018, 14:36   #1  
jonny.do is offline
jonny.do
Участник
 
7 / 11 (1) +
Регистрация: 14.02.2018
! Шифрование XML-файлов
Впервые работаю с шифрованием, прошу сильно не ругать.(AX2009, .NET 3.5)
В контейнере лежит сертификат CertificateEncryption, необходимо преобразовать его в формат ГОСТ 34.10(CryptoPro.Sharpei.Gost3410) используя публичный ключ. Буду рад любому совету.
Код:
byte[] encryptedKey = CPEncryptedXml.EncryptKey(sessionKey, (Gost3410)CertificateEncryption.PublicKey.Key);

В C# это выглядит довольно просто:
Код:
// Создаем случайный симметричный ключ.
            // В целях безопасности удаляем ключ из памяти после использования.
            using (Gost28147CryptoServiceProvider sessionKey = new Gost28147CryptoServiceProvider())
            {
                // Создаем объект класса EncryptedXml
                EncryptedXml eXml = new EncryptedXml();
                // Зашифроваем узел на симметричном ключе.
                byte[] encryptedElement = eXml.EncryptData(elementToEncrypt, sessionKey, false);
                // Зашифровываем сессионный ключ и добавляем эти зашифрованные данные к узлу EncryptedKey.
                EncryptedKey ek = new EncryptedKey();
                byte[] encryptedKey = CPEncryptedXml.EncryptKey(sessionKey, (Gost3410)CertificateEncryption.PublicKey.Key);
                ek.CipherData = new CipherData(encryptedKey);
                ek.EncryptionMethod = new EncryptionMethod(CPEncryptedXml.XmlEncGostKeyTransportUrl);
                KeyInfoX509Data data = new KeyInfoX509Data(CertificateOpen);
                ek.KeyInfo.AddClause(data);
                // Добавляем ссылку на зашифрованный ключ к зашифрованным данным.
                edElement.KeyInfo.AddClause(new KeyInfoEncryptedKey(ek));
                // Добавляем зашифрованные данные к объекту EncryptedData.
                edElement.CipherData.CipherValue = encryptedElement;
            }

Последний раз редактировалось jonny.do; 01.11.2018 в 14:48.