Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline chaplin  
#1 Оставлено : 27 июля 2011 г. 21:20:34(UTC)
chaplin

Статус: Новичок

Группы: Участники
Зарегистрирован: 27.07.2011(UTC)
Сообщений: 2

Здравствуй те всем! Встала следующая задача : вобщем раньше на сервере автоматом создавались архивы с данными, отправлялись операторам, последние в криптоарме шифровали архив имея сертификат и отправляли зашифрованный файл клиенту. Понятное дело что этот процемм нужно автоматизировать и сразу после создания архива шифровать его и отправлять клиенту. То есть задача такова : есть сертификат и есть некотрый архив *.rar который нужно зашифровать средствами sharpei. Платформа .net. Просмотрел примеры, полазил на форуме. Не док конца понял весь алгоримт шифровки. Разобраться можно но сроки поджжимают. Прошу вас наставить меня на правильный путь. Есть некоторые наработки из примеров - скажите что не так делаю. И вообще в ту ли сторону копаю.

Код:
 
       static void EncryptTestFile(string certFileName)
        {
            
            X509Certificate2 cert = new X509Certificate2(certFileName);
            AsymmetricAlgorithm pk = cert.PublicKey.Key;
            Gost3410 alg = pk as Gost3410;
            if (alg == null)
                throw new CryptographicException("Not a gost certificate");

           
            Gost28147 symmetric = Gost28147.Create();

            
            Gost3410 srcContainer = Gost3410.Create();
            Gost3410Parameters srcPublicKeyParameters = srcContainer.ExportParameters(false);

            // Создаем agree ключ
            GostSharedSecretAlgorithm agree = srcContainer.CreateAgree(
                alg.ExportParameters(false));

            // Зашифровываем симметричный ключ на agree ключе.
            byte[] WrappedKey = agree.Wrap(symmetric, 
                GostKeyWrapMethod.CryptoProKeyWrap);

            // Создаем поток шифратора.
            ICryptoTransform transform = symmetric.CreateEncryptor();

            // Создаем зашифрованный файл.
            using (FileStream ofs = new FileStream(EncryptedFileName, FileMode.Create))
            {
                BinaryWriter bw = new BinaryWriter(ofs);

                // Записываем зашифрованный симметричный ключ.
                bw.Write(WrappedKey.Length);
                bw.Write(WrappedKey);

                // Записываем синхропосылку
                bw.Write(symmetric.IV.Length);
                bw.Write(symmetric.IV);

                // Передаем открытый ключ.
                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Serialize(ofs, srcPublicKeyParameters);

                // Создаем поток шифрования для записи в файл.
                using (CryptoStream cs = new CryptoStream(ofs, transform, CryptoStreamMode.Write))
                {
                    byte[] data = new byte[4096];
                    // Открываем входной файл.
                    using (FileStream ifs = new FileStream(SourceFileName, FileMode.Open, FileAccess.Read))
                    {
                        // и переписываем содержимое в выходной поток.
                        int length = ifs.Read(data, 0, data.Length);
                        while (length > 0)
                        {
                            cs.Write(data, 0, length);
                            length = ifs.Read(data, 0, data.Length);
                        }
                    }
                }
            }
        }


Заранее Спасибо.
Offline chaplin  
#2 Оставлено : 27 июля 2011 г. 21:41:02(UTC)
chaplin

Статус: Новичок

Группы: Участники
Зарегистрирован: 27.07.2011(UTC)
Сообщений: 2

Это код из примера. И что странно в строке Gost28147 symmetric = Gost28147.Create(); выпадает эксепшн : Не удалось привести тип объекта "CryptoPro.Sharpei.Gost28147CryptoServiceProvider" к типу "CryptoPro.Sharpei.Gost28147"
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.