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 cifrado.
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 cifrar();
public abstract int descifrar();
}
Código:
public class Cifrado {
static int numero2;
public Cifrado(int numero2) {
Cifrado.numero2=numero2;
}
public int cifrar(int numero2)
{
return numero2;
}
public int descifrar(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 cifrar()
{
return numero - numero2;
}
public int descifrar()
{
return numero + numero2;
}
public void encriptacionDiferencia()
{
System.out.print("Algoritmo diferencia: ");
System.out.print("código cifrado -> " + cifrar());
System.out.println(" código descifrado -> " + descifrar());
}
}
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 cifrar()
{
return numero - numero2;
}
public int descifrar()
{
return numero / numero2;
}
public void encriptacionDiferencia()
{
System.out.print("Algoritmo diferencia: ");
System.out.print("código cifrado -> " + cifrar());
System.out.println(" código descifrado -> " + descifrar());
}
}
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 cifrar()
{
return numero ^ numero2;
}
public int descifrar()
{
return numero2 ^ numero;
}
public void encriptacionDiferencia()
{
System.out.print("Algoritmo diferencia: ");
System.out.print("código cifrado -> " + cifrar());
System.out.println(" código descifrado -> " + descifrar());
}
}
Código:
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.cifrar(4);
algoritmo1.encriptacionDiferencia();
algoritmo2.encriptacionDiferencia();
algoritmo3.encriptacionDiferencia();
}
}
Pero lo tengo mal planteado desde el principio, me dicen que tengo que tener el constructor de cifrador así:
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!