|
01.11.2018, 14:36 | #1 |
Участник
|
Шифрование 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 |
Участник
|
Ну так вроде в 2009 уже можно вызвать тот же самый C# код, нэ?
|
|
02.11.2018, 14:49 | #3 |
Участник
|
Решилось следующим образом:
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, фсс, элн |
|
|