Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Debci en 22 Noviembre 2009, 12:11 pm



Título: Problema con algoritmo encriptador y matriz
Publicado por: Debci en 22 Noviembre 2009, 12:11 pm
Hola a todos, hoy estaba diseñando un algoritmo que cifra cadenas, cuando me dio un error extraño (puede que sea por mi autodidactia) que no soy capaz de resolver:


Código
  1. public void cifra() {
  2. String cadenaIntroducida = new String("Debci");
  3.  
  4. cadenaIntroducida.toUpperCase();
  5. char[] matrizCaracteres = cadenaIntroducida.toCharArray();
  6. int numeroCaracteres = matrizCaracteres.length;
  7. System.out.println("La cadena tiene " + numeroCaracteres +" caracteres." );
  8. for(int i = 0; i < numeroCaracteres; i++){
  9.    matrizCaracteres[i] = matrizCaracteres[i+1];
  10. }
  11. for(int x = 0; x < numeroCaracteres; x++){
  12.    System.out.println(matrizCaracteres[x]);
  13. }
  14.  
  15. }
La cosa, es que mi algoritmo hace lo siguiente, transforma todos los valores del array en el siguiente del indice, es decir, el valor que este en 0, sera transformado por el que este en 1, el de uno sera el 2, basicamente corre hacia un lado los indices.
Me da un error raro al ejecutar:
Código:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
        at encriptacion.Encriptador.cifra(Encriptador.java:23)
        at encriptacion.Encriptador.main(Encriptador.java:32)
La cadena tiene 5 caracteres.
Java Result: 1
A que se debe?

Saludos


Título: Re: Problema con algoritmo encriptador y matriz
Publicado por: Leyer en 22 Noviembre 2009, 19:46 pm
si tu metodo es ese donde  se queda el valor de 0 es decir si colocas "hola" daria esto "olaa" ?


Título: Re: Problema con algoritmo encriptador y matriz
Publicado por: Debci en 22 Noviembre 2009, 20:12 pm
si tu metodo es ese donde  se queda el valor de 0 es decir si colocas "hola" daria esto "olaa" ?
si, mas bien es problema de planteamiento, ya que no se como hacer que se cambien de alguna manera que lo combierta ilegible.

Saludos


Título: Re: Problema con algoritmo encriptador y matriz
Publicado por: Blitzkrieg' en 22 Noviembre 2009, 22:10 pm
si tu metodo es ese donde  se queda el valor de 0 es decir si colocas "hola" daria esto "olaa" ?
si, mas bien es problema de planteamiento, ya que no se como hacer que se cambien de alguna manera que lo combierta ilegible.

Saludos

Si, porque tu metodo es muy facil de descifrar  ;D


Título: Re: Problema con algoritmo encriptador y matriz
Publicado por: Debci en 23 Noviembre 2009, 18:33 pm
si tu metodo es ese donde  se queda el valor de 0 es decir si colocas "hola" daria esto "olaa" ?
si, mas bien es problema de planteamiento, ya que no se como hacer que se cambien de alguna manera que lo combierta ilegible.

Saludos

Si, porque tu metodo es muy facil de descifrar  ;D
La cosa esta en que no me preccupa que sea facil o no, si no como lo puedo hacer para encriptarlo (por ejemplo) se me ocurrió que podia dividir la string en dos y girarlas y volver a juntarlas.

Pero sigue sin ser efectivo.

Saludos


Título: Re: Problema con algoritmo encriptador y matriz
Publicado por: -Ramc- en 23 Noviembre 2009, 18:52 pm
Para la pregunta que haces, el error dá por esta línea:
matrizCaracteres[i ] = matrizCaracteres[i+1];

Cuando i vale 4, está en la letra 'i' y le dices que en donde está la letra 'i' o sea matrizCaracteres[4], guarde la letra matrizCaracteres[i+1] es decir, matrizCaracteres[5] la cual no existe y por eso de lanza el error de desbordamiento del array.


Título: Re: Problema con algoritmo encriptador y matriz
Publicado por: Debci en 23 Noviembre 2009, 18:56 pm
Para la pregunta que haces, el error dá por esta línea:
matrizCaracteres[i ] = matrizCaracteres[i+1];

Cuando i vale 4, está en la letra 'i' y le dices que en donde está la letra 'i' o sea matrizCaracteres[4], guarde la letra matrizCaracteres[i+1] es decir, matrizCaracteres[5] la cual no existe y por eso de lanza el error de desbordamiento del array.
la cosa es que no se me ocurre como estabilizar esa situacion, ya se que el error ocurre porque intento leer un indice que no existe, pero como se podria hacer para que lea solamente hasta el ultimo?

Saludos


Título: Re: Problema con algoritmo encriptador y matriz
Publicado por: -Ramc- en 23 Noviembre 2009, 19:00 pm
Pues poniendole que lea sólamente hasta el último, si pones:

Código:
for(int i = 0; i < numeroCaracteres-1; i++)
Te queda ebcii, por ejemplo.

Puedes hacer que el último sea el primero también, y así por lo menos tienes la cadena completa para posibles algoritmos reversibles, etc. Todo depende de lo que necesites.