ОК, вот что вы можете сделать.
Примите имя файла, номер начальной строки и номер конечной строки.
Прочитайте строки, просто записав их в другой файл, еслиони меньше, чем номер начальной строки или больше номера конечной строки.
Как только вы прочитаете строку, находящуюся в диапазоне, вы можете зашифровать ее ключом и IV.Возможно, вам потребуется закодировать его в байтовый массив, например, сначала с использованием UTF-8, поскольку современные шифры, такие как Salsa, работают с байтами, а не с текстом.
Вы можете использовать номер строки, возможно, в качестве nonce / IV для вашегопотоковый шифр, если вы не ожидаете изменения количества строк.В противном случае вы можете добавить к зашифрованному тексту большой фиксированный размер случайного одноразового номера.
Зашифрованный текст - возможно, включая одноразовый номер - может быть закодирован как base64 без окончания строки.Затем вы записываете строку base 64 в другой файл.
Продолжайте шифровать строки, пока не найдете конечный индекс.Вам решать, будет ли ваша конечная строка включительной или исключительной.
Теперь прочитайте оставшиеся строки и запишите их в другой файл.
Не забудьте завершить шифрование и закрытьфайл.Возможно, вы захотите уничтожить исходный входной файл.
Шифрование байтов может быть проще, поскольку вы можете записать в исходный файл.Однако написание зашифрованных строк, вероятно, всегда расширит зашифрованный текст по сравнению с открытым текстом.Поэтому вам нужно скопировать файл, так как он должен расти из середины.
Я не имею понятия, почему вы должны хранить список или словарь в памяти.Если это часть требований, то я не вижу этого в остальной части вопроса.Если вы читаете таким образом все строки файла, то, очевидно, вы используете излишнюю память.
Конечно, если ваш файл 4 ГиБ - это всего лишь одна строка, вы все равно используете слишком много памяти,В этом случае вам нужно выполнить потоковую передачу всего , анализировать текст из файлов, помещать его в символьный буфер, декодировать его, шифровать, снова кодировать в base 64 и записывать в файл.Конечно, выполнимо, но сложно, если вы никогда не делали таких вещей.