Salve ragazzi,
vorrei un aiuto.
Sto sviluppando un'applicazione che prevede l'invio/ricezione di file criptati.

Genero una chiave e con questa faccio lo xor con ogni singolo byte del file in questione.

Il problema è che già su un file di 0.5MB ci vogliono 20-30sec, troppi!
Pensavo si potesse fare una lettura bufferizzata del file e poi fare uno XOR di tale buffer con la mia chiave, ma il problema è che l'XOR tra array di byte non è possibile.

Ho cercato un pò in rete, ma gli esempi che ho trovato riportano solo uno XOR tra singoli byte.
Sotto vi riporto il mio codice.

Se avete qualche consiglio sono tutto orecchie!
Vi ringrazio in anticipo!

[...]
fin = new FileInputStream(downloadPath + "/" +fileName);
fos = new FileOutputStream(dest);
int i = 0;
int c = 0;
while((i = fin.read()) != -1) {
fos.write((i ^ secretKey.toString().charAt(c)));
c++;
if(c >= secretKey.toString().length())
c=0;
}
PS. la secret key è un oggetto di tipo BigInteger.
grazie, ciao