Java - Ayuda por favor!!

 
Vista:
sin imagen de perfil

Ayuda por favor!!

Publicado por Jairo (1 intervención) el 11/05/2016 06:31:33
Buenas noches compañeros,

Estoy implementando el metodo de cifrado Vigenére en Java mediante Netbeans, pero he tenido problemas con el metodo de descifrado.

Aqui les adjunto el codigo que he realizado hasta el momento, lo unico que me falta es la parte de descifrado, solo que no le he encontrado la logica para poder realizarlo.

Como muchos de ustedes conocen el metodo de cifrado Vigenére, para descrifrar un mensaje cifrado, se necesita primero del mensaje cifrado, y principalmente de la clave, una vez esto, se hace la busqueda de caracter por caracter, entonces, se coge la primera letra de la palabra clave y se ubica en las filas, una vez ubicado se recorre toda esa fila hasta encontrar el caracter que corresponde a la primera letra del mensaje cifrado y asi este metodo me debe de arrojar como resultado el caracter que tiene como columna.

No se si me he hecho entender. Espero me pueda ayudar a guiarme, 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
0
Responder

Ayuda por favor!!

Publicado por Tom (1831 intervenciones) el 11/05/2016 16:42:49
No sé cómo lo estás haciendo, pero este código simplificado funciona:

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
28
29
30
31
32
public class TestVigenere {
	/* ASCII characters */
	public static String encodeStr(String key, String txt) throws UnsupportedEncodingException {
		byte res[] = txt.getBytes("ASCII"), kb[] = key.getBytes("ASCII");
 
		for(int i = 0; i < res.length; i++) {
			res[i] = (byte)((res[i] + kb[i % kb.length]) % 127);
		}
 
		return new String(res);
	}
	/* ASCII Characters */
	public static String decodeStr(String key, String txt) throws UnsupportedEncodingException {
		byte res[] = txt.getBytes("ASCII"), kb[] = key.getBytes("ASCII");
 
		for(int i = 0; i < res.length; i++) {
			res[i] = (byte)(res[i] - kb[i % kb.length]);
			if(res[i] < 0)
				res[i] += 127;
		}
 
		return new String(res);
	}
	/* */
	public static void main(String[] args) throws IOException {
		String t1 ="perico el de los palotes", k = "the key";
		String encoded = TestVigenere.encodeStr(k, t1);
		String decoded = TestVigenere.decodeStr(k, encoded);
		System.out.printf("Encode of '%s' with '%s' => '%s'\n", t1, k, encoded);
		System.out.printf("Decoded '%s'\n", decoded);
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar