You are on page 1of 5

Pasamos a ver las clases CifradorVigenere.java y DescifradorVigenere.

java y claro la
claseVigenere.java.

CifradorVigenere.java: Que ser la encarga de cifrar las letras que se le enve:


package unsch.efpis.cifrador;
/**
*
* @author sin_querer@hotmail.com
*/

public class CifradorVigenere {

char tablaCesar[] = {
'A', 'B', 'C', 'D', 'E',
'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', '',
'O', 'P', 'Q', 'R', 'S',
'T', 'U', 'V', 'W', 'X',
'Y', 'Z'
};

public char getTextoCifrado(char parTextoClaro, char parTextoClave) {
int indiceX = 0;
int indiceY = 0;

for (int i = 0; i < tablaCesar.length; i++) {
if (parTextoClaro == tablaCesar[i]) {
indiceX = i;
break;
}
}

for (int j = 0; j < tablaCesar.length; j++) {
if (parTextoClave == tablaCesar[j]) {
indiceY = j;
break;
}
}

return tablaCesar[(indiceX + indiceY) % 27];
}
}

/////// DescifradorVigenere.java: La cual se encargar de descifrar las letras que se le
enve:
1. package unsch.efpis.cifrador;
2.
3. /**
4. *
5. * @author sin_querer@hotmail.com
6. */
7. public class DescifradorVigenere {
8.
9. char tablaCesar[] = {
10. 'A', 'B', 'C', 'D', 'E',
11. 'F', 'G', 'H', 'I', 'J',
12. 'K', 'L', 'M', 'N', '',
13. 'O', 'P', 'Q', 'R', 'S',
14. 'T', 'U', 'V', 'W', 'X',
15. 'Y', 'Z'
16. };
17.
18. public char getTextoDescifrado(char parTextoCifrado, charparTextoClave) {
19. int indiceCharTextoCifrado = 0;
20. int indiceCharTextoClave = 0;
21.
22. for (int i = 0; i < tablaCesar.length; i++) {
23. if (parTextoCifrado == tablaCesar[i]) {
24. indiceCharTextoCifrado = i;
25. break;
26. }
27. }
28.
29. for (int j = 0; j < tablaCesar.length; j++) {
30. if (parTextoClave == tablaCesar[j]) {
31. indiceCharTextoClave = j;
32. break;
33. }
34. }
35. if(indiceCharTextoCifrado >= indiceCharTextoClave)
36. return tablaCesar[(indiceCharTextoCifrado -indiceCharTextoClave) % 27];
37. else
38. return tablaCesar[27-(indiceCharTextoClave -indiceCharTextoCifrado)];
39. }
40. }
////// Vigenere.java: Que se encargar de la gestin del cifrado y descifrado.
1. package unsch.efpis.metodo;
2.
3. import unsch.efpis.cifrador.CifradorVigenere;
4. import unsch.efpis.cifrador.DescifradorVigenere;
5.
6. /**
7. *
8. * @author sin_querer@hotmail.com
9. */
10. public class Vigenere {
11. private String textoCifrado = "";
12. private String textoClaro = "";
13. CifradorVigenere cifradoVigenere = new CifradorVigenere();
14. DescifradorVigenere descifradoVigenere = new DescifradorVigenere();
15.
16. public String encriptarTextoClaro(String textoClaro, String clave) {
17. String claveCompletada = "";
18. int indice = 0;
19. for (int i = indice; i < textoClaro.length(); i++) {
20. for (int j = 0; j < clave.length(); j++) {
21. if (claveCompletada.length() < textoClaro.length()) {
22. if (textoClaro.charAt(indice) != ' ') {
23. claveCompletada += clave.charAt(j) + "";
24. } else {
25. claveCompletada += " ";
26. j--;
27. }
28. indice++;
29. }
30. }
31. }
32.
33. for (int i = 0; i < textoClaro.length(); i++) {
34. char charTextoClaro = textoClaro.charAt(i);
35. char charClaveCompletada = claveCompletada.charAt(i);
36. if (charTextoClaro != ' ') {
37. textoCifrado +=cifradoVigenere.getTextoCifrado(charTextoClaro,
charClaveCompletada) + "";
38. } else {
39. textoCifrado += " ";
40. }
41. }
42.
43. return textoCifrado;
44. }
45.
46. public String desencriptarTextoCifrado(String textoCifrado, Stringclave) {
47. String claveCompletada = "";
48. int indice = 0;
49. for (int i = indice; i < textoCifrado.length(); i++) {
50. for (int j = 0; j < clave.length(); j++) {
51. if (claveCompletada.length() < textoCifrado.length()) {
52. if (textoCifrado.charAt(indice) != ' ') {
53. claveCompletada += clave.charAt(j) + "";
54. } else {
55. claveCompletada += " ";
56. j--;
57. }
58. indice++;
59. }
60. }
61. }
62.
63. for (int i = 0; i < textoCifrado.length(); i++) {
64. char charTextoCifrado = textoCifrado.charAt(i);
65. char charClaveCompletada = claveCompletada.charAt(i);
66. if (charTextoCifrado != ' ') {
67. textoClaro +=descifradoVigenere.getTextoDescifrado(charTextoCifrado,
charClaveCompletada) + "";
68. } else {
69. textoClaro += " ";
70. }
71. }
72.
73. return textoClaro;
74. }
75.
76. }
77. ///////////
y claro la clase Pruebas.java donde veremos algunas comprobaciones de nuestro
encriptador:


78. package unsch.efpis.pruebas;
79.
80. import unsch.efpis.metodo.*;
81.
82. public class Pruebas {
83.
84. public static void main(String[] args) {
85.
86. Vigenere vigenere = new Vigenere();
87. System.err.println("Encriptamos el texto claro...");
88. System.out.println(vigenere.encriptarTextoClaro("PARIS VAUT BIEN UNE
MESSE", "LOUP"));
89. System.err.println("Ahora desencriptamos el resultado que nos dio la
encriptacin anterior...");
90. System.out.println(vigenere.desencriptarTextoCifrado("AOMXD KUKE PCTX JHT
WSNIO", "LOUP"));
91. }
92. }
93.

You might also like