Я просмотрел код и не нашел никаких проблем, но я не очень знаком с классами, которые вы использовали, поэтому я вполне могу ошибаться. Вместо этого я дам несколько общих советов, касающихся любой ошибки:
Попробуй выследить проблему. Трудно найти ошибку во многих строках кода. Создайте кратчайший код, отображающий некорректное поведение.
Например, попробуйте записать строку в выходной поток. Размер правильный?
- Если нет, то вы почти обнаружили проблему - что-то не так с записью файла, шифрование не имеет никакого отношения к проблеме.
- Если да, продолжайте добавлять функциональность небольшими шагами, пока не обнаружите проблему.
Это стандартная техника отладки, которая чрезвычайно полезна, я предлагаю использовать ее каждый раз, когда вы сталкиваетесь с проблемой.
Кроме того, старайтесь всегда иметь чистые начальные условия, т.е. убедитесь, что записанный файл был удален. Попробуйте свой код на разных входах и посмотрите, не будет ли каждый раз получаться один и тот же результат или есть различия.
Edit:
Согласно другим ответам, 64-битный блок вызывает ваши проблемы. Используя идеи, описанные ранее, вы можете легко исключить многие другие факторы, пока не останется только само шифрование.
Тогда вы можете спросить: «Почему TripeDES добавляет до 7 байтов к входу?» что было бы гораздо более ясным вопросом, чем "Что не так с моей тройной оболочкой DES?" - и вы наверняка получите ответ на этот простой вопрос менее чем за минуту!