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


 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Duda Cifrado Cesar por fuerza bruta?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda Cifrado Cesar por fuerza bruta?  (Leído 2,787 veces)
cradleStorm

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Duda Cifrado Cesar por fuerza bruta?
« en: 28 Septiembre 2015, 23:29 »

hola buen dia!  ;D , recurro a esto porque tengo la duda sobre como podria modidicar el metodo descifrarCesar (esto es para java) para poder hacer que me devuelva un listado de todas las palabras descifradas posibles, mi idea es poner un while y que dentro de este se quede el for, el while lo que me regresaria seria el parametro desplazamiento++, pero no encuentro la forma de que esto quede bien, disculpen estoy empezando y me confundo un poco con las estructuras de while y for, lo que quiero que haga el programa solo es que me de las 28 opciones posibles y despues que me de la opcion correcta descifrada, el programa completo es este:
_________________________________________________

[code ]
Código
  1. public class CifradoCesar {
  2.  
  3. public static String alfabetoCesar = "abcdefghijklmnñopqrstuvwxyz ";//"abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
  4.  
  5.  
  6. /**
  7.  * Función para cifrar una cadena conun desplazamiento x
  8.  * @param cadena
  9.  * @param desplazamiento
  10.  * @return
  11.  */
  12. public static String cifrarCesar(String cadena, int desplazamiento){
  13.  
  14.      String cesar="";//Cadena con el mensaje cifrado
  15.      for(int i = 0; i<cadena.length();i++){//Por cada caracter de la cadena original
  16.          int nuevaPosicion = (alfabetoCesar.indexOf(cadena.charAt(i)) + desplazamiento) % alfabetoCesar.length();//Posicion x + n mod 27
  17.          cesar = cesar + alfabetoCesar.charAt(nuevaPosicion);//Concatena texto cifrado
  18.      }
  19.      return cesar;
  20.  }
  21.  
  22. /**
  23.   * Función para descifrar una cadena con un desplazamiento x
  24.   * @param cesar
  25.   * @param desplazamiento
  26.   * @return
  27.   */
  28. public static String descifrarCesar(String cesar, int desplazamiento){
  29.     String cadenaDescifrada="";
  30.        for(int i = 0; i<cesar.length();i++){//el desplazamiento no debe ser mayor al tamaño de caracteres
  31.                int nuevaPosicion = (alfabetoCesar.indexOf(cesar.charAt(i))+alfabetoCesar.length()-(desplazamiento%alfabetoCesar.length()))%alfabetoCesar.length();//Posicion x - n mod 27
  32.                cadenaDescifrada+=alfabetoCesar.charAt(nuevaPosicion);//Concatena texto descifrado
  33.        }
  34.        return cadenaDescifrada;
  35.  
  36. }
  37.  
  38.  
  39.  
  40.    /**
  41.      * @param args the command line arguments
  42.      */
  43.    public static void main(String[] args) {
  44.        String cifrado =  "ldqcfdlcvdkfqgrirqvbqhlvqtfcvkzfqldqtizcvdqtfdqkfurjqbrjquvqbrqbvo";
  45.        System.out.println("Cifrado: " + cifrado);
  46.        System.out.println("Descifrado: "+ descifrarCesar(cifrado,0));
  47.  
  48.    }
  49.  
  50. }
  51.  
[/code ] [/quote]______________
y lo que quiero hacer con el metodo descifrarCesar es esto
while(desplazamiento <=cifrado.length()){
aqui todo el for que se encuentra en ese metodo
desplazamiento++;
}

pero me da error.
o alguien me podria dar otra sugerencia para modificar ese metodo y me regrese las 28 posibles respuestas????, es que no se me ocurre otra cosa.
NOTA: solo puedo modificar ese método.
Ya me desespere, llevo como una semana con esto  :-[


« Última modificación: 29 Septiembre 2015, 00:05 por cradleStorm » En línea

daryo


Desconectado Desconectado

Mensajes: 1.071



Ver Perfil WWW
Re: Duda Cifrado Cesar por fuerza bruta?
« Respuesta #1 en: 28 Septiembre 2015, 23:54 »

prueba identar el codigo , y ponlo dentro de las etiquetas [code ]aca tu codigo[/code ] [/quote]
sin el espacio

con respecto al programa quita la ñ del abecedario y funciona, tiene un pequeño bug.

Si por ejemplo pongo z y desplazamiento 1 no sale nada(porque el mod es cero) , en ese caso si el alfabeto es mayor a la nueva posicion es necesario sumarle 1


« Última modificación: 29 Septiembre 2015, 00:01 por daryo » En línea

buenas
cradleStorm

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: Duda Cifrado Cesar por fuerza bruta?
« Respuesta #2 en: 29 Septiembre 2015, 00:07 »

prueba identar el codigo , y ponlo dentro de las etiquetas [code ]aca tu codigo[/code ]
sin el espacio

con respecto al programa quita la ñ del abecedario y funciona, tiene un pequeño bug.

Si por ejemplo pongo z y desplazamiento 1 no sale nada(porque el mod es cero) , en ese caso si el alfabeto es mayor a la nueva posicion es necesario sumarle 1

ok, muchas gracias,ya idente el codigo, pero en caso de que no quiera usar un numero de desplazamiento? como podria hacerlo?
En línea

daryo


Desconectado Desconectado

Mensajes: 1.071



Ver Perfil WWW
Re: Duda Cifrado Cesar por fuerza bruta?
« Respuesta #3 en: 29 Septiembre 2015, 00:12 »

ok, muchas gracias,ya idente el codigo, pero en caso de que no quiera usar un numero de desplazamiento? como podria hacerlo?

sobre el espacio no era ningun bug tienes un espacio en blanco en la variable alfabetoCesar despues de la z

para recorrerla
Código
  1. String ccadena =  "cadena";
  2. String cifrado;
  3.       for(int a=1;a<10;a++)
  4.        {
  5.         cifrado=cifrarCesar(cadena,a);
  6.         System.out.println("cifrado:"+cifrado);
  7.         System.out.println("decifrado:"+descifrarCesar(cifrado,a));
  8.      {
  9.  
« Última modificación: 29 Septiembre 2015, 00:19 por daryo » En línea

buenas
cradleStorm

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: Duda Cifrado Cesar por fuerza bruta?
« Respuesta #4 en: 29 Septiembre 2015, 00:23 »

sobre el espacio no era ningun bug tienes un espacio en blanco en la variable alfabetoCesar despues de la z

para recorrerla
Código
  1. String ccadena =  "cadena";
  2. String cifrado;
  3.       for(int a=1;a<10;a++)
  4.        {
  5.         cifrado=cifrarCesar(cadena,a);
  6.         System.out.println("cifrado:"+cifrado);
  7.         System.out.println("decifrado:"+descifrarCesar(cifrado,a));
  8.      {
  9.  

ok, esto lo probe, disculpa las molestias :( , y me funciona pero el problema es que debo de modificar el metodo descifrarCesar para que me de todas las posibilidades, e han dicho que no puedo hacerlo en el main, osea debo hacer que no se necesite el desplazamiento en ese metodo y a la vez me de todas las posibilidades
En línea

daryo


Desconectado Desconectado

Mensajes: 1.071



Ver Perfil WWW
Re: Duda Cifrado Cesar por fuerza bruta?
« Respuesta #5 en: 29 Septiembre 2015, 00:28 »

el for lo puedes poner dentro de la funcion , es decir:
Código
  1. public static String descifrarCesar(String cesar){
  2.     String cadenaDescifrada="";
  3.     for(int desplazamiento=0;desplazamiento<10;desplazamiento++){
  4.  
  5.        for(int i = 0; i<cesar.length();i++){//el desplazamiento no debe ser mayor al tamano de caracteres
  6.                int nuevaPosicion = (alfabetoCesar.indexOf(cesar.charAt(i))+alfabetoCesar.length()-(desplazamiento%alfabetoCesar.length()))%alfabetoCesar.length();//Posicion x - n mod 27
  7.                cadenaDescifrada+=alfabetoCesar.charAt(nuevaPosicion);//Concatena texto descifrado
  8.        }
  9.        cadenaDescifrada+="\n";// asi hago que haga un saldo de linea
  10.     }
  11.     return cadenaDescifrada;
  12. }
En línea

buenas
cradleStorm

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: Duda Cifrado Cesar por fuerza bruta?
« Respuesta #6 en: 29 Septiembre 2015, 00:35 »

el for lo puedes poner dentro de la funcion , es decir:
Código
  1. public static String descifrarCesar(String cesar){
  2.     String cadenaDescifrada="";
  3.     for(int desplazamiento=0;desplazamiento<10;desplazamiento++){
  4.  
  5.        for(int i = 0; i<cesar.length();i++){//el desplazamiento no debe ser mayor al tamano de caracteres
  6.                int nuevaPosicion = (alfabetoCesar.indexOf(cesar.charAt(i))+alfabetoCesar.length()-(desplazamiento%alfabetoCesar.length()))%alfabetoCesar.length();//Posicion x - n mod 27
  7.                cadenaDescifrada+=alfabetoCesar.charAt(nuevaPosicion);//Concatena texto descifrado
  8.        }
  9.        cadenaDescifrada+="\n";// asi hago que haga un saldo de linea
  10.     }
  11.     return cadenaDescifrada;
  12. }
Muchas gracias!!, yo lo estaba intentando con un while, y me resultaba error pero probando con for, si ha salido, ya solo falta la otra parte, pero esa la pensare yo, gracias nuevamente por tomarte la molestia
En línea

daryo


Desconectado Desconectado

Mensajes: 1.071



Ver Perfil WWW
Re: Duda Cifrado Cesar por fuerza bruta?
« Respuesta #7 en: 29 Septiembre 2015, 00:36 »

por nada  ;D
En línea

buenas
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda Fuerza Bruta
Dudas Generales
mercuryQ 1 2,505 Último mensaje 29 Abril 2011, 00:17
por SuperDraco
Qué preferis: Cifrado cesar o Ensalada cesar?
Foro Libre
Castg! 6 3,153 Último mensaje 1 Agosto 2011, 22:45
por scr21
Fuerza bruta duda con tiempo por cada caracter
Hacking Básico
Senior++ 7 4,322 Último mensaje 24 Octubre 2011, 17:16
por $Edu$
duda sobre Herramienta de fuerza bruta
Hacking Ético
Tservidor 7 2,940 Último mensaje 2 Junio 2016, 20:52
por el-brujo
Duda WPA Handshake y fuerza bruta
Hacking Wireless
Ethicalsk 1 1,660 Último mensaje 11 Julio 2016, 08:59
por AlbertoBSD
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines