Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Søra en 1 Agosto 2012, 15:56 pm



Título: Error cifrado ROOT13
Publicado por: Søra en 1 Agosto 2012, 15:56 pm
Buenas a todos, como indica el título estoy teniendo bastantes problemas a la hora de desarrollar un pequeño cifrador de texto en ROOT13, no son errores sintácticos ya que el compilador no em dice nada asi que supongo que son errores lógicos a ver si alguien me puede echar un cable.

Código
  1. import java.util.Scanner;
  2.  
  3. public class ArraysFor {
  4.  
  5. public static void main(String[] args) {
  6.  
  7. char[] abecedario={'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'};
  8. System.out.println("Introduce el numero de caracteres a cifrar en ROOT13");
  9. Scanner scann = new Scanner (System.in);
  10. int maximo = scann.nextInt();
  11. char letra[];
  12. letra = new char[maximo];
  13.  
  14. for (int k=0; k<maximo; k++) {
  15.  
  16. letra[k] = scann.next().charAt(0);
  17.  
  18. }
  19.  
  20. for (int i=0; i<maximo; i++) {
  21.  
  22. for (int j=0; j<27; j++) {
  23.  
  24. if (letra[i] == abecedario[j]) {
  25.  
  26. int x=0;
  27. x = j + 13;
  28.  
  29.    if (x>27) {
  30.  
  31.     x = x - 27;
  32.  
  33.    letra[i]=abecedario[x]; }
  34.  
  35.    else {
  36.  
  37.    letra[i]=abecedario[x]; }
  38.  
  39.                }
  40. }
  41. }
  42.  
  43. for (int g=0; g<maximo; g++){
  44. System.out.println(letra[g]);
  45. }
  46. }
  47.  
  48. }

Bueno ese es el código lo que queria era cifrar los caracteres de manera que pasaran a ser los que se encuentran 13 posiciones mas a la derecha en el abecedario pero como se puede comprobar cuando ejecutamos el programa no todos los caracteres quedan bien cifdrados, lo raro es que para mi sorpresa hay algunos que si.

Un saludo y espero su ayuda.


Título: Re: Error cifrado ROOT13
Publicado por: xmbeat en 28 Agosto 2012, 03:24 am

Código
  1. ]import java.util.Scanner;
  2.  
  3. public class Prueba {
  4.  
  5. public static void main(String[] args) {
  6.  
  7. char[] abecedario={'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'};
  8. System.out.println("Introduce el numero de caracteres a cifrar en ROOT13");
  9. Scanner scann = new Scanner (System.in);
  10. int maximo = scann.nextInt();
  11. char letra[];
  12. letra = new char[maximo];
  13.  
  14. for (int k=0; k<maximo; k++) {
  15.  
  16. letra[k] = scann.next().charAt(0);
  17.  
  18. }
  19.  
  20. for (int i=0; i<maximo; i++) {
  21.  
  22. for (int j=0; j<27; j++) {
  23.  
  24. if (letra[i] == abecedario[j]) {
  25. int x = j + 13;
  26.    if (x>=27) {
  27.     x = x - 27;
  28.    letra[i]=abecedario[x]; }
  29.  
  30.    else {
  31.  
  32.    letra[i]=abecedario[x];
  33. }
  34. break;
  35.                }
  36. }
  37. }
  38.  
  39. for (int g=0; g<maximo; g++){
  40. System.out.println(letra[g]);
  41. }
  42. }
  43.  
  44. }
  45.