E' normale che se tenti di leggere un file grosso e non c'è abbastanza memoria esca un bel OUT OF MEMORY
Devi quindi cambiare approccio e leggere il file a blocchi invece che leggerlo tutto.
Ad esempio puoi definire dei blocchi da 10MB (o quello che vuoi tu) ed a ogni blocco leggerlo, criptarlo e scriverlo su di un altro file, poi leggi un altro blocco, lo crittografi e lo scrivi, e prosegui così fino alla fine del file.
C'è però una cosa: se crittografando un blocco risulta che il blocco crittografato ha ancora le stesse dimensioni del blocco originale il tutto funziona senza problemi, se invece ricavi un blocco di dimensioni diverse allora la cosa è un po' più difficile, perchè quando andrai a scrivere il blocco sul nuovo file dovrai anche fare dei marker per segnalare quanto grande è il blocco, altrimenti poi quando andrai a rileggerlo non riuscirai più a capire quanto grande è il blocco e quindi non riuscirai a decrittografarlo correttamente
per ulteriori info chiedi pure