Во-первых: если это вообще возможно, не делайте этого сами. Шифрование очень (очень!) Легко испортить способами, которые приводят к небезопасным результатам. Если это вообще возможно, используйте внешний компонент или библиотеку для выполнения максимально возможной работы по шифрованию.
Во-вторых, если вы собираетесь сделать это самостоятельно, как сейчас, не используйте DES. DES больше не является достаточно сильным шифром. Triple-DES - это нормально, но вы действительно хотите использовать AES. Он считается безопасным, при его проектировании учитывались современные процессоры, у вас есть выбор длины ключа, чтобы сбалансировать безопасность с производительностью, а современные процессоры имеют аппаратное ускорение для AES (AES-NI). (Я не знаю, использует ли это Java, но если этого не произойдет, это, безусловно, может начаться в будущем, тогда как шансы на это у Triple-DES равны нулю.)
В-третьих, вы читаете и пишете байт одновременно. Хотя в любом случае шифрование будет интенсивно загружать процессор, выполнение этого в том виде, в каком вы сейчас находитесь, будет медленнее, чем необходимо. Чтение и запись с использованием byte[]
из 4 КБ или около того должны значительно улучшить производительность.