Хорошо, я думал, что это может быть ваш шестнадцатеричный кодировщик / декодер, но они работают. Поэтому я написал быстрое шифрование и проверил его на соответствие вашему классу.
Проблема в том, что вы прокладываете. Я не понимаю, почему вы дополняете свою строку до длины 16, но это нуль-символы, которые вы добавили к вашей строке, которые нельзя распечатать. Так что либо не дополняйте строку, либо обнуляйте нулевые значения во время расшифровки, чтобы восстановить точную строку, которую вы зашифровали.
Для ясности, удобства обслуживания и повторного использования вы должны действительно выполнить только одну четкую логическую операцию в каждом из ваших методов, то есть заполнение должно быть выполнено до того, как вы передадите строку в метод шифрования, поэтому метод шифрования просто шифрует.