Ejercicio Java

Iniciado por Luffy97, 13 Octubre 2016, 12:18 PM

0 Miembros y 1 Visitante están viendo este tema.

Luffy97

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.
Código (java) [Seleccionar]

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: ");
            String nomArxiu = new Scanner(System.in).nextLine();
            System.out.println("Introdueix el nom de l'arxiu encriptat: ");
            String nomArxiu2 = new Scanner(System.in).nextLine();
            System.out.println("Introdueix la contrasenya de encriptació: ");
            String password = new Scanner(System.in).nextLine();
            int tamaño = password.length();
            int cont = 0;
            if (!nomArxiu.equals(nomArxiu2))
            {
                FileReader fr = new FileReader("arxius\\" + nomArxiu);
                FileWriter fw = new FileWriter("arxius\\" + 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();
            }
        }
        catch (Exception e)
        {
            System.out.println("e.toString");
        }
    }
   
}


Gracias. Un saludo.

oldaccount

#1
Hola Luffy97.

Esta es mi solución al problema:

Código (java) [Seleccionar]
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class XOR {
public static void main(String[] args) throws Exception {
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");
System.exit(0);
}

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.