Шифрование RC2 и разделители пакетов
Я работаю над клиент-серверным приложением, и связь между ними зашифрована. Я использую шифрование RC2, потому что клиент встроен, а ресурсы процессора ограничены. Я использую методы System.Security.Cryptography.RC2CryptoServiceProvider.CreateDecryptor/CreateEncryptor для создания классов шифрования.
Моя проблема связана с тенденцией TCP разбивать сообщения на несколько пакетов. Поскольку все сообщение может не прийти за один вызов Socket.Receive(), мне нужно включить разделитель пакета в конце исходящего пакета, чтобы принимающая сторона могла сказать, где заканчивается пакет (в настоящее время с использованием 0x0D). Однако шифрование RC2 в конечном итоге создает 0x0D где-то в полезной нагрузке, в результате чего принимающая сторона интерпретирует пакет как выполненный. Когда он пытается расшифровать этот усеченный пакет, он терпит неудачу.
Любой совет о том, как такого рода вещи обычно обрабатываются? Или даже просто символ, который, как известно, шифрование RC2 НЕ производит, который я могу использовать в качестве разделителя?
1 ответ
Воспользовался предложением GregS, чтобы поставить перед зашифрованным пакетом префикс длины заголовка и поставить разделитель пакета после зашифрованного пакета для проверки работоспособности. Спасибо!