17.09.2005 19:13:56[TLS, DecryptMessage()] можно ли определить длину данных в зашифрованном виде? Ответов: 0
kowak
Здравствуйте. Может кто подсказать?
Есть поток зашифрованных TLS сообщений в виде строки.
stream_str = CryptMsg1_str + CryptMsg2_str + ... + CryptMsgN_str;
Причем длины CryptMsg1_str и CryptMsg2_str не известны. Так же есть момент когда CryptMsgN_str (последнее сообщение) не до конца записано.
Вопрос: Как можно расшифровать эти сообщения?

Вариант 1 (плохой вариант):
for(int i=1; i<stream_str_size; i++)
{
memcpy(msg_str, stream_str, i);
if(DecryptMessage(msg_str) == SEC_E_OK)
border = i; // граница первого сообщения
}

Вариант 2 (немного лучше).
используя SEC_E_INCOMPLETE_MESSAGE и SEC_E_OK для поиска длины путем деления попалам stream_str.
Этот вариант на практике не получается :( есть случаи когда DecryptMessage(CryptMsg_str+str) == SEC_E_OK.