Java - ayuda con ejercicio java de cifrado de códigos numéricos

 
Vista:
sin imagen de perfil

ayuda con ejercicio java de cifrado de códigos numéricos

Publicado por tollis (1 intervención) el 06/03/2014 19:58:34
Buenas, estoy aprendiendo java, pero tengo un problema a la hora de desarrollar un ejercicio, este es el enunciado:

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
1
2
3
4
5
public interface Algoritmo
{
public abstract int encriptar();
public abstract int desencriptar();
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;
	}
	}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
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();
    }
}

Pero lo tengo mal planteado, 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!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder