Проблема в том, что (не) алгоритм заполнения не является правильным.
(3) DES шифрует / дешифрует блоки по 8 байт. Поскольку не все тексты имеют размер 8 байтов, последний блок должен содержать байты, которые не являются оригинальными из простого текста. Теперь уловка состоит в том, чтобы выяснить, какой из них является последним символом простого текста. Иногда длина простого текста известна заранее - тогда символы заполнения могут быть чем угодно.
Если длина простого текста неизвестна, то должен использоваться детерминированный алгоритм заполнения, например, PKCS5Padding. PKCS5Padding всегда выполняет заполнение, даже если открытый текст имеет размер блока N * в байтах. Причина этого проста: в противном случае он не знает, является ли последний байт простым текстом или заполнением: 41 41 41 41 41 41 41 41 08 08 08 08 08 08 08 08
будет 8 символами 'A' с 8 байтами заполнения.
Похоже, либо алгоритм распаковки не реализован должным образом, либо используется недетерминированный алгоритм заполнения.