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

Уведомление

Icon
Error

5 Страницы<12345>
Опции
К последнему сообщению К первому непрочитанному
Offline Андрей *  
#21 Оставлено : 12 августа 2020 г. 16:12:45(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
нельзя так ... использовать CryptMsgUpdate, она любит небольшие порции...
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#22 Оставлено : 12 августа 2020 г. 16:14:37(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Автор: esolomonov Перейти к цитате
Автор: Андрей * Перейти к цитате
p.s. но это не оптимальный вариант, нужно как в сообщении16 - проанализировать сначала, какие есть серийные, получить нужный сертификат\контейнер\ключ и его использовать в вызовах


Не поможет. У меня тормозит CryptMsgUpdate. Я провел четкие измерения, выставил буфер в 100 МБ и загрузил файл 10 МБ — 6 секунда. Файл 37 МБ — 84 секунды. CryptMsgUpdate вызывался один раз и эти 84 секунды все ушли на этот вызов. То есть, не важно что делается после CryptMsgUpdate, тормозит именно CryptMsgUpdate.


у меня в профиле - есть приложение...
CryptMsgUpdate там во всех операциях, не передаю большие размеры (снижают скорость), по 1МБ - всё летает, можете попробовать расшифровать файл... ну или через КриптоАРМ - он ту же CryptMsgUpdate использует (и кажется раньше по 32 Кб )
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#23 Оставлено : 12 августа 2020 г. 16:29:44(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
проверил на 230 Мб - 5 сек на обычном диске
на SSD - 3 сек.

размер буфера: 1024*1024;

Snimok ehkrana ot 2020-08-12 17-28-47.png (35kb) загружен 10 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline esolomonov  
#24 Оставлено : 12 августа 2020 г. 16:59:51(UTC)
esolomonov

Статус: Участник

Группы: Участники
Зарегистрирован: 12.08.2020(UTC)
Сообщений: 22
Российская Федерация
Откуда: Москва

Автор: Андрей * Перейти к цитате
проверил на 230 Мб - 5 сек на обычном диске
на SSD - 3 сек.

размер буфера: 1024*1024;

Snimok ehkrana ot 2020-08-12 17-28-47.png (35kb) загружен 10 раз(а).


Спасибо, что помогаете мне! Но не получается :) может у меня что-то не так с ОС? Я уже какие только порции не пробовал. Вот текущий кусочек кода, сделал ~1 МБ:

Код:
// Process message
dwRemaining = file.Length;
stream = new BinaryReader(file);
do
{
	// Read one chunk of data
	pbData = stream.ReadBytes(1024 * 1000 * 1);
	if (pbData.Length == 0)
	{
		break;
	}

	// Update message piece by piece    
	bFinal = (dwRemaining <= 1024 * 1000 * 1);
	fixed (byte* pAux = &pbData[0])
	{
		bResult = CryptMsgUpdate(
			hMsg.DangerousGetHandle(),
			new IntPtr(pAux),
			pbData.Length,
			bFinal
		);
		if (!bResult)
		{
			throw new Exception("CryptMsgUpdate error #" + Marshal.GetLastWin32Error().ToString(), new Win32Exception(Marshal.GetLastWin32Error()));
		}
	}
	dwRemaining = dwRemaining - pbData.Length;

} while (!bFinal);

А вот результат работы на файле размером 37 МБ:

Clip2net_200812165326.png (132kb) загружен 6 раз(а).

Вот, что не так я делаю? Попробовал сделать точно 1024*1024, тоже самое. Пробовал запускать в режиме отладки и без нее. Все одинаково. Дофига времени :) и все время уходит именно на этот цикл в коде выше.
Offline Андрей *  
#25 Оставлено : 12 августа 2020 г. 17:05:39(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Вы невнимательно читали...
1. 1 МБ = 1024*1024
2. Изменения в коде ...





в Decrypt закомментировать (а лучше обработать по коду):



но это всё равно, не оптимальное решение (обращаться к хранилищу при каждом Update)
Техническую поддержку оказываем тут
Наша база знаний
Offline esolomonov  
#26 Оставлено : 12 августа 2020 г. 17:22:44(UTC)
esolomonov

Статус: Участник

Группы: Участники
Зарегистрирован: 12.08.2020(UTC)
Сообщений: 22
Российская Федерация
Откуда: Москва

Автор: Андрей * Перейти к цитате
Вы невнимательно читали...



Видимо я не до конца понимаю суть функций АПИ. Я не понимаю как можно вызывать Win32.Decrypt еще до того как загрузился весь файл. Для меня это нонсенс. Попробовал выполнить ваш код как он есть, получил ошибку:

CryptMsgUpdate error #87
Параметр задан неверно

На одной из итераций CryptMsgUpdate. Пока не понимаю что это значит, буду думать. Спасибо.
Offline Андрей *  
#27 Оставлено : 12 августа 2020 г. 17:39:45(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Автор: esolomonov Перейти к цитате
Автор: Андрей * Перейти к цитате
Вы невнимательно читали...



Видимо я не до конца понимаю суть функций АПИ. Я не понимаю как можно вызывать Win32.Decrypt еще до того как загрузился весь файл. Для меня это нонсенс.


Куда он должен загрузиться-то?
Это и есть поточная обработка - считывается блоками, вызывается расшифровка, из Decrypt - при успехе - вызывается Callback-функция - которая записывает расшифрованный участок в файл. В итоге - можно обрабатывать гигабайтные файлы, при этом контролируя буфер (1-10 МБ)
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#28 Оставлено : 12 августа 2020 г. 17:41:15(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Автор: esolomonov Перейти к цитате
получил ошибку:

CryptMsgUpdate error #87
Параметр задан неверно

На одной из итераций CryptMsgUpdate.


Да, код нужно править, дописывать условия, инициализировать необходимые указатели.


Техническую поддержку оказываем тут
Наша база знаний
Offline esolomonov  
#29 Оставлено : 12 августа 2020 г. 17:50:43(UTC)
esolomonov

Статус: Участник

Группы: Участники
Зарегистрирован: 12.08.2020(UTC)
Сообщений: 22
Российская Федерация
Откуда: Москва

Автор: Андрей * Перейти к цитате
Автор: esolomonov Перейти к цитате
получил ошибку:

CryptMsgUpdate error #87
Параметр задан неверно

На одной из итераций CryptMsgUpdate.


Да, код нужно править, дописывать условия, инициализировать необходимые указатели.




Спасибо! Суть я понял. Я просто плохо разбираюсь в криптографии... Но делать надо. Буду думать!
Offline Андрей *  
#30 Оставлено : 12 августа 2020 г. 17:57:17(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Автор: esolomonov Перейти к цитате
Автор: Андрей * Перейти к цитате
Автор: esolomonov Перейти к цитате
получил ошибку:

CryptMsgUpdate error #87
Параметр задан неверно

На одной из итераций CryptMsgUpdate.


Да, код нужно править, дописывать условия, инициализировать необходимые указатели.




Спасибо! Суть я понял. Я просто плохо разбираюсь в криптографии... Но делать надо. Буду думать!



Тоже на досуге попробую доисправлять.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
5 Страницы<12345>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.