Ваша кодировка и декодирование не работает.Вам не нужно, чтобы ключ и сообщение были одинаково длинными.
Если ваш ключ короче сообщения, вы кодируете только часть сообщения.Затем вы завершаете результат в этой позиции.Помимо потери части сообщения, пока все в порядке.
Если ваш ключ длиннее сообщения, вы пытаетесь закодировать символы из сообщения, которое не было введено пользователем.Сначала вы попытаетесь закодировать завершающий '\0'
после последнего символа сообщения.Это не удастся, потому что findcolumn
не возвращает правильное значение и вызывает неопределенное поведение.Вы, вероятно, сохраните некоторый «случайный» символ в своем зашифрованном сообщении.Аналогично для любого другого символа в сообщении.
При декодировании вы пытаетесь декодировать этот случайный контент, и маловероятно, что вы снова получите начальный '\0'
.Вместо этого вы получаете «случайные» результаты декодирования.
Прослушивание предупреждений о невозможности возврата значения из функции non-void по крайней мере покажет вам, когда вы пытаетесь закодировать или декодировать какое-то подозрительное значение, и вы можете понять, почемуэто может произойти вообще.