Ciao a tutti

Sto facendo un piccolo programma crittografico, e mi sorge spesso un problema.
Il programma usa 2 array di bytes e li combina. 1 è il file, l'altro la chiave. La chiave è tanto più sicura quanto è più lunga, e quindi la soluzione ovvia è usare un altro file come chiave (voglio vedere chi mai potrebbe fare brute force su una chiave di 600MB!)

Il mio problema nasce quando sia il file che la chiave sono di grosse dimensioni. Come avrete intuito, mi da "Out of System Resources". Questo succede perchè ho due variabili che contengono gli array di byte, inizializzate così

InputFileBytes = File.ReadAllBytes(FileDaCifrare);
Key = File.ReadAllBytes(FileChiave);

Se entrambi i file sono abbastanza grandi, non c'è abbastanza memoria per farlo. Mi stavo chiedendo se non fosse possibile farlo in modo più efficiente. Per esempio, ogni byte del file da cifrare viene utilizzato una sola volta. Non c'è un modo per evitare di caricare tutto il file in memoria, considerando che ho bisogno di un solo byte per volta?

Grazie