Зашифрованные данные, которые хранятся в текстовом файле
Это уже противоречие в терминах.Зашифрованные данные являются двоичными, а не текстовыми и не должны храниться в файлах с расширением .txt
.
byte[] inputBytes = new byte[(int) decryptedData.length()];
Эта строка кода не имеет смысла.Вы еще не знаете, как долго будут расшифрованы данные.Расшифрованный файл может даже не существовать, и в этом случае будет получен массив нулевой длины;или это может отличаться от того, что должно быть произведено, и в этом случае это неправильная длина.
inputStream.read(inputBytes);
Удалите эту строку и ту, что перед ней.
- Этосчитывает в массив, размер которого в лучшем случае соответствует размеру дешифрованных данных, что является неправильным размером для зашифрованных данных, а в худшем - просто неправильного размера или даже нулевой длины, как показано выше.
- Он считывает входные данные, вероятно, до тех пор, пока этот буфер неправильного размера не заполнится, и затем вы (а) полностью игнорируете считанные данные и (б) пытаетесь читать тот же поток дальше, что приведет к сбою в цикле дешифрования, или в лучшем случае приведет к неправильному выводу, поскольку вы, возможно, не расшифровываете все данные.
Когда я печатаю CipherInputStream на консоль, я получаю некоторый контент
Нет, вы этого не делаете.Вы получаете фрагмент данных общего вида CipherInputStream@0011223344
, который является просто результатом вызова CipherInputStream.toString()
, который не содержит какой-либо «контент».