AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 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.
Старый 02.11.2018, 05:58   #2  
Pandasama is offline
Pandasama
Участник
 
457 / 137 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Ну так вроде в 2009 уже можно вызвать тот же самый C# код, нэ?
Старый 02.11.2018, 14:49   #3  
jonny.do is offline
jonny.do
Участник
 
7 / 11 (1) +
Регистрация: 14.02.2018
Решилось следующим образом:

X++:
System.Security.Cryptography.AsymmetricAlgorithm alg;
alg = CertificateEncryption.get_PublicKey(); 
    gost3410 = CryptoPro.Sharpei.Gost3410::Create();
    gost3410.FromXmlString(alg.ToXmlString(false));
    encryptedKey = CryptoPro.Sharpei.Xml.CPEncryptedXml::EncryptKey(sessionKey, gost3410);
За это сообщение автора поблагодарили: iCloud (1).
Теги
ax2009, c#, cryptography, gost3410, фсс, элн

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
kurthatlevik: AX suggestion: XML Columns and XML indexes Blog bot DAX Blogs 0 28.10.2015 20:11
kurthatlevik: AX suggestion: XML Columns and XML indexes Blog bot DAX Blogs 0 28.08.2015 13:11
Валидация XML файлов в Axapta AxDude DAX: Программирование 42 20.11.2013 17:25
X++: Serializing Axapta Foundation Class instances as XML streams Blog bot DAX Blogs 0 04.06.2009 23:05
axStart: How to use XSLT in AIF and what’s wrong with empty xml Nodes. Blog bot DAX Blogs 0 27.04.2008 18:07

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:44.