Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.09.2010(UTC) Сообщений: 73 Откуда: АО ИНФИНИТУМ, Москва Сказал «Спасибо»: 3 раз
|
Здравствуйте все.
При выполнении декодирования CMS-сообщения encodedEnvelopedCms длиной 142344192 байт получаем Cryptographic Exception с мессаджем САБЖ
envelopedCms.Decode(encodedEnvelopedCms);
1) В чем может быть причина? 2) Исходное сообщение перед зашифровкой имело длину около 84 МБайт. Можно ли уменьшить размер зашифрованного CMS-сообщения?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,331 Сказал «Спасибо»: 550 раз Поблагодарили: 2210 раз в 1725 постах
|
KVI написал:Здравствуйте все.
При выполнении декодирования CMS-сообщения encodedEnvelopedCms длиной 142344192 байт получаем Cryptographic Exception с мессаджем САБЖ
envelopedCms.Decode(encodedEnvelopedCms);
1) В чем может быть причина? 2) Исходное сообщение перед зашифровкой имело длину около 84 МБайт. Можно ли уменьшить размер зашифрованного CMS-сообщения?
кодировка зашифрованного "сообщения" в итоге base64? |
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
Используйте "поточный" режим. В примерах есть. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.09.2010(UTC) Сообщений: 73 Откуда: АО ИНФИНИТУМ, Москва Сказал «Спасибо»: 3 раз
|
Шифрование делается так:
1. envelopedCms.Encrypt() 2. envelopedCms.Encode()
Наверное, Encode() кодирует в Base64.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.09.2010(UTC) Сообщений: 73 Откуда: АО ИНФИНИТУМ, Москва Сказал «Спасибо»: 3 раз
|
maxdm написал:Используйте "поточный" режим. В примерах есть. Нам надо передать большой открытый файл, предварительно его зашифровав, с клиента на сервер и там некоторое время хранить в зашифрованом виде. С потоковым режимом, как я понял, передаваемые куски файла шифруются и потом сразу расшифровываются. Как можно по другому?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.09.2010(UTC) Сообщений: 73 Откуда: АО ИНФИНИТУМ, Москва Сказал «Спасибо»: 3 раз
|
Спасибо, получилось, наконец.
Пришлось повозиться с CryptoStream.FlushFinalBlock().
Вот, что получилось (ключ и синхропосылка для расшифровки передаются отдельно с помощью KeyExchange):
// Класс WCFStream. Прозрачное шифрование.
public override int Read(byte[] buffer, int offset, int bufferLen) { var bytesRead = _file.Read(buffer, offset, bufferLen);
if (_encryptor != null) { _fout.Position = 0;
if (bytesRead == 0) { if (!_encryptor.HasFlushedFinalBlock) _encryptor.FlushFinalBlock(); } else _encryptor.Write(buffer, 0, bytesRead);
bytesRead = (int)_fout.Position; _fout.Position = 0; bytesRead = _fout.Read(buffer, 0, bytesRead); }
_totalBytesRead += bytesRead;
if (Reading != null) Reading(this, new ReadingEventArgs(bytesRead, _totalBytesRead, _length));
return bytesRead; }
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close