Мне интересно, можно ли это сделать в другом направлении, чтобы получить длину исходных данных открытого текста с учетом зашифрованного текста.
RC5 — блочный шифр; то, о чем вы спрашиваете, касается режима блочного шифрования (и того, какое дополнение использует эта реализация); недостаточно информации для ответа на ваш конкретный вопрос; однако у меня есть предположение.
«Блочный шифр» — это обратимое преобразование из n-битной строки битов (в данном случае $n=64$) в n-битную битовую строку. Что делает «режим блочного шифра», так это то, что «блочный шифр» и использует его для выполнения более общей полезной операции, например, для шифрования открытого текста произвольной длины.
Теперь, взглянув на код, может показаться, что код использует «режим ECB» для шифрования строки (что, как правило, является плохим выбором — конечно, это не ваша проблема). В «режиме ECB» сам режим может обрабатывать только открытые тексты, длина которых кратна длине блока (в данном случае 16 байтов). Поскольку мы обычно хотим обрабатывать открытые тексты произвольной длины, мы добавляем «заполнение», то есть некоторые дополнительные элементы в конце, чтобы сделать длину кратной 16 байтам (с которыми затем может работать режим).
Это заполнение разработано таким образом, чтобы упростить удаление заполнения во время расшифровки, однако есть несколько возможностей, и код дешифрования, который вы предоставили, не говорит нам, какой из них используется. В наиболее распространенном режиме самый последний байт используется для обозначения количества добавленных байтов заполнения - вы можете проверить, так ли это в ваших примерах.