Статус: Новичок
Группы: Участники
Зарегистрирован: 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);
}
}
}
}
}
Заранее Спасибо.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 27.07.2011(UTC) Сообщений: 2
|
Это код из примера. И что странно в строке Gost28147 symmetric = Gost28147.Create(); выпадает эксепшн : Не удалось привести тип объекта "CryptoPro.Sharpei.Gost28147CryptoServiceProvider" к типу "CryptoPro.Sharpei.Gost28147"
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close