elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  El cifrador de Polybios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: El cifrador de Polybios  (Leído 3,272 veces)
Tronos154

Desconectado Desconectado

Mensajes: 79


Invictus maneo


Ver Perfil
El cifrador de Polybios
« en: 26 Enero 2016, 18:47 pm »

Buenas gente,he estado intentando hacer un método en Java que dado dos valores enteros y una palabra crea una matriz de las dimensiones de estos dos valores y a cada posición de la matriz le asigna el valor ordenado del alfabeto,después coge cada letra de la palabra y almacena en un String los valores en los cuales se sitúa cada letra de la palabra en la matriz.  El problema es que este me devuelve unos valores que no corresponden a los previstos cuando cifro la palabra manualmente,llevo varios días dándole vueltas al problema y no encuentro el error. Estaría muy agradecido si alguno me muestra el error que yo no he sabido encontrar. Un saludo.



Código
  1. public class CifradoPolybios {
  2.  
  3.    public String cifrar(int fila, int columna, String cadena) {
  4.        if ((fila * columna) < 27) {
  5.            fila = 5;
  6.            columna = 6;
  7.        }
  8.        char[][] leyenda = new char[fila][columna];                 //Array donde se le asigna los valores al abecedario.
  9.        int contadorFila = 0;
  10.        int contadorColumna = 0;
  11.        int contadorAbecedario = 96;
  12.        char letra;
  13.        while (contadorFila < fila) {                               //Bucle que da valores al array correspondientes con el abecedario.
  14.  
  15.            leyenda[contadorFila][contadorColumna] = (letra = (char) contadorAbecedario);
  16.  
  17.            if (contadorColumna == (columna - 1)) {
  18.                contadorColumna = 0;
  19.                contadorFila++;
  20.            } else {
  21.                contadorColumna++;
  22.                contadorAbecedario++;
  23.            }
  24.        }
  25.        contadorFila = 0;
  26.        contadorColumna = 0;
  27.        cadena = cadena.toLowerCase();
  28.        int contadorLetra = 0;
  29.        String cadenaEncriptada = null;                                 //Variable que almacena la palabra una vez cifrada.
  30.        while (contadorLetra < cadena.length()) {                       //Bucle que cifra la palabra usando el array una vez ha sido asignado el valor.
  31.            if (cadena.charAt(contadorLetra) == ((char) 32)) {
  32.                contadorLetra++;
  33.            }
  34.            if (cadena.charAt(contadorLetra) == leyenda[contadorFila][contadorColumna]) {
  35.                if (cadenaEncriptada == null) {
  36.                    cadenaEncriptada = String.valueOf(contadorFila) + "" + String.valueOf(contadorColumna) + "";
  37.                }
  38.                cadenaEncriptada += String.valueOf(contadorFila) + "" + String.valueOf(contadorColumna) + "";
  39.                contadorLetra++;
  40.                contadorFila = 0;
  41.                contadorColumna = 0;
  42.            } else {
  43.  
  44.                if (contadorColumna == (columna - 1)) {
  45.                    contadorColumna = 0;
  46.                    contadorFila++;
  47.                } else {
  48.                    contadorColumna++;
  49.                }
  50.            }
  51.        }
  52.        return cadenaEncriptada;
  53.    }
  54. }
  55.  


« Última modificación: 26 Enero 2016, 19:00 pm por Tronos154 » En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: El cifrador de Polybios
« Respuesta #1 en: 26 Enero 2016, 20:32 pm »

Hola no he revisado detenidamente tu codigo asi que no se cual sea
exactamente el problema
pero me imagino que esta intentado hacer este cifrado https://es.wikipedia.org/wiki/Cuadrado_de_Polibio

si es asi revisa este codigo que arme donde codifica como esta en la wikipedia
solo con la diferiencia que cuando se escribe un caracter que no esta en la tabla como
como el espacio en blanco lo sustituye por un doble cero "00"

si tienes dudas o no es lo que buscas avisa
Código
  1. public class CifradoPolybios {
  2.  
  3.    public String cifrar(final String cadena) {
  4.  
  5.       final String TABLA_POLIBO[] = {"11", "12", "13", "14", "15",
  6.                                      "21", "22", "23", "24", "24", "25",
  7.                                      "31", "32", "33", "34", "35",
  8.                                      "41", "42", "43", "44", "45",
  9.                                      "51", "52", "53", "54", "55"};
  10.  
  11.        char strMayusculas[] = cadena.toUpperCase().toCharArray();
  12.        StringBuilder Result = new StringBuilder();
  13.  
  14.        for (int i = 0; i < strMayusculas.length; i++) {
  15.            char caracter =strMayusculas[i];    
  16.            if (caracter >= 'A' && caracter <= 'Z') {
  17.                if (caracter == 'I' || caracter == 'J') Result.append("24");//es el equivalente para I y J
  18.                else Result.append(TABLA_POLIBO[caracter-65]);
  19.                continue;
  20.            }
  21.            Result.append("00");//si algun valor no esta en la tabla
  22.        }
  23.        return Result.toString();
  24.    }
  25.  
  26.    public static void main(String[] args) {
  27.        System.out.println(new CifradoPolybios().cifrar("Wikipedia la enciclopedia libre"));
  28.    }
  29. }


« Última modificación: 26 Enero 2016, 20:39 pm por crack81 » En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
Tronos154

Desconectado Desconectado

Mensajes: 79


Invictus maneo


Ver Perfil
Re: El cifrador de Polybios
« Respuesta #2 en: 26 Enero 2016, 21:30 pm »

Ante todo gracias por la ayuda Crack81 , he estado observando tu código y mas o menos es igual al mio exceptuando que el array que creas en las primeras lineas es fijo para cualquier texto que cifres,en cambio en el mio  la coordenada de una letra varia dependiendo del numero de filas o columnas que le digas.He estado modificando mi código con el método StringBuilder pero sigue dándome valores incorrectos al cifrar un texto  :-( :-( :-(
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Necisito Un encriptador o cifrador
Software
Leon2010 2 1,370 Último mensaje 18 Mayo 2010, 11:00 am
por musicman
Cifrador root 13
Programación C/C++
Søra 7 3,102 Último mensaje 15 Diciembre 2010, 21:59 pm
por Søra
[PROYECTO]Desarrollo de un cifrador indetectable « 1 2 3 »
Análisis y Diseño de Malware
ErOzE 22 9,703 Último mensaje 5 Marzo 2011, 22:52 pm
por ErOzE
Crypter - Cifrador de Archivos - Universal
Programación General
traviatØ 5 3,865 Último mensaje 28 Julio 2011, 01:41 am
por [Case]
Mi programa cifrador de datos. (criptografia).
Programación C/C++
elkiy 5 4,476 Último mensaje 30 Mayo 2013, 03:37 am
por dato000
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines