Desarrollar una aplicación de cifrado de códigos numéricos.
El cifrador recibirá un código numérico y una implementación de un algoritmo de cifrado/descifrado y la orden de cifrar o descifrar el código.
Existen distintos algoritmos:
• Multiplicar por un número determinado.
• Diferencia existente a un número determinado.
• El XOR con un número determinado.
Desarrollar la clase Actividad5 que en su método main cree un cifrador, y le pida cifrar y descifrar varios códigos usando distintos algoritmos de encriptación.
Realizar también el diseño del Diagrama de Clases UML.
hasta ahora este es el codigo que yo tenia realizado, el cual funcionaba
Código:
public interface Algoritmo { public abstract int encriptar(); public abstract int desencriptar(); }
Código:
public class Cifrado { static int numero2; public Cifrado(int numero2) { Cifrado.numero2=numero2; } public int encriptar(int numero2) { return numero2; } public int desencriptar(int numero2) { return numero2; } }
Código:
public abstract class Diferencia extends Cifrado implements Algoritmo { //Atributos private int numero; //Constructores public Diferencia(int param) { super(numero2); numero = param; } //Metodos public int encriptar() { return numero - numero2; } public int desencriptar() { return numero + numero2; } public void encriptacionDiferencia() { System.out.print("Algoritmo diferencia: "); System.out.print("código encriptado -> " + encriptar()); System.out.println(" código desencriptado -> " + desencriptar()); } }
Código:
public abstract class Multiplica extends Cifrado implements Algoritmo { //Atributos private int numero; //Constructores public Multiplica(int param) { super(numero2); numero = param; } //Metodos public int encriptar() { return numero - numero2; } public int desencriptar() { return numero / numero2; } public void encriptacionDiferencia() { System.out.print("Algoritmo diferencia: "); System.out.print("código encriptado -> " + encriptar()); System.out.println(" código desencriptado -> " + desencriptar()); } }
Código:
public abstract class Xor extends Cifrado implements Algoritmo { //Atributos private int numero; //Constructores public Xor(int param) { super(numero2); numero = param; } //Metodos public int encriptar() { return numero ^ numero2; } public int desencriptar() { return numero2 ^ numero; } public void encriptacionDiferencia() { System.out.print("Algoritmo diferencia: "); System.out.print("código encriptado -> " + encriptar()); System.out.println(" código desencriptado -> " + desencriptar()); } }
Código:
Pero lo tengo mal planteado desde el principio, me dicen que tengo que tener el constructor de cifrador así:public class Actividad5 { public static void main(String[] args) { Cifrado c = new Cifrado(4); Diferencia algoritmo1 = new Diferencia(10){}; Multiplica algoritmo2 = new Multiplica(5){}; Xor algoritmo3 = new Xor(20){}; c.encriptar(4); algoritmo1.encriptacionDiferencia(); algoritmo2.encriptacionDiferencia(); algoritmo3.encriptacionDiferencia(); } }
public Cifrador(long l, Algoritmo tipoCifrado, boolean b){
................
y utilizarlo así:
Cifrador c=new Cifrador(111L, new Xor(),true);
pero no entiendo para que tengo que crear un "new Xor()" o un "boolean" ni que parte del código aparte del constructor y el main tendría que modiicar
por favor si me pudrieran guiar un poco me ayudaría mucho.
Saludos y gracias de antemano!