Buenas, tengo que realizar un ejercicio en java. El ejercicio consiste en cifrar un documento binario con el mètodo XOR. Yo tengo echo el codigo pero solo me funciona en extensión .txt aquí lo adjunto.
package xor;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Scanner;
public class XOR {
public static void main
(String[] args
) { try
{
System.
out.
println("Introdueix el nom de l'arxiu: "); System.
out.
println("Introdueix el nom de l'arxiu encriptat: "); System.
out.
println("Introdueix la contrasenya de encriptació: "); int tamaño = password.length();
int cont = 0;
if (!nomArxiu.equals(nomArxiu2))
{
int caracter = fr.read();
while(caracter != -1)
{
int encrip = caracter ^ password.charAt(cont); //cifra la letra
fw.write(encrip); //escribe la letra en el fichero
caracter = fr.read(); //lee el siguiente caracter
if (cont < tamaño - 1)
{
cont++;
}
else
{
cont = 0;
}
}
fr.close();
fw.close();
}
}
{
System.
out.
println("e.toString"); }
}
}
Gracias. Un saludo.
Hola Luffy97.
Esta es mi solución al problema:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class XOR {
Path source, dest;
byte[] key;
byte[] buffer;
if(args.length != 3) {
System.
out.
println("Usage: XOR SOURCE DEST KEY"); System.
out.
println("Encrypt SOURCE into DEST using XOR algorithm with KEY"); }
source = Paths.get(args[0]);
dest = Paths.get(args[1]);
key = args[2].getBytes();
buffer = Files.readAllBytes(source);
for(int i = 0; i < buffer.length; i++) {
buffer[i] = (byte) (buffer[i] ^ key[i % key.length]);
}
Files.write(dest, buffer);
}
}
Saludos.