|
|
#1 |
|
Участник
|
Впервые работаю с шифрованием, прошу сильно не ругать.(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. |
|
|
|
|
#2 |
|
Участник
|
Ну так вроде в 2009 уже можно вызвать тот же самый C# код, нэ?
|
|
|
|
|
#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, фсс, элн |
|
|
|