Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: javieer en 27 Febrero 2019, 17:11 pm



Título: programa java
Publicado por: javieer en 27 Febrero 2019, 17:11 pm
Hola a todos,

estoy completando un programa en el que a traves de una funcion " static char[] encriptacionpalabras (int tamañopalabra) {} , al introducir una palabra se devuelve esta con la misma longitud pero con asteriscos, tengo que completar el codigo de la funcion. alguna pista? deberia empezar con un for?

Gracias.


Título: Re: programa java
Publicado por: Serapis en 27 Febrero 2019, 18:37 pm
Hay varias formas de acometerlo...

- Una muy sencilla es conociendo la cantidad de caracteres que tiene la palabra, crear otra del mismo tamaño formado solo por asteriscos. La palabra original no se ve así alterada.
- Si el tamaño de las palabras está limitado a un máximo (pongamos 16-20 caracteres), por velocidad puede crearse un array cuyo contenido sean precisamente strings de 1,2,3,4...hasta 16 asteriscos, cuando se reciba la palabra, se devuelve el string contenido en la posición cuyo índice coincide con el tamaño de caracteres de la palabra recibida. La palabra original no se ve así alterada.
- Otro modo... inicias un bucle y remplazas cada carácter aparecido por un asterisco. La palabra original si queda alterada en este otro caso.

...y ahora es tu turno de escribir código...


Título: Re: programa java
Publicado por: srWhiteSkull en 27 Febrero 2019, 18:43 pm
Yo te recomiendo que añadas otro parámetro y que lo denomines clave, de esa forma podrás usar una clave para cifrar las palabras o textos y hacer más seguro, según el algortimo, la cifrado.

Luego te pongo un ejmeplo que ahora me tengo que ir.


Título: Re: programa java
Publicado por: srWhiteSkull en 28 Febrero 2019, 00:34 am
Código
  1. ...
  2.    public static String encriptaTexto(String clave, String texto){
  3.        String textoEncriptado= new String();
  4.        int i=0;
  5.        char cClave;
  6.        for (char caracter:texto.toCharArray()){
  7.            cClave = clave.charAt((i++)% clave.length());
  8.            textoEncriptado+=(""+(char)(caracter+cClave));
  9.        }
  10.        return textoEncriptado;
  11.    }
  12.  
  13.    public static String desencriptaTexto(String clave, String textoEncriptado){
  14.        String texto= new String();
  15.        int i=0;
  16.        char cClave;
  17.        for (char caracter:textoEncriptado.toCharArray()){
  18.            cClave = clave.charAt((i++)% clave.length());
  19.            texto+=(""+(char)(caracter-cClave));
  20.        }        
  21.        return texto;
  22.    }
  23.  
  24.    public static void main(String[] args) {
  25.        String textoEncriptado=encriptaTexto("1234","Hola mundo");
  26.  
  27.        System.out.println(textoEncriptado);        
  28.        System.out.println(desencriptaTexto("1234",textoEncriptado));        
  29.    }
  30. ...

Resultado:
y¡Ÿ•QŸ¨¢•¡
Hola mundo


Título: Re: programa java
Publicado por: Serapis en 28 Febrero 2019, 15:18 pm
srWhiteSkull, nota que no pide cifrar nada, tan solo 'tapar' la clave con asteriscos, lo cual es trivial.
Citar
...al introducir una palabra se devuelve esta con la misma longitud pero con asteriscos...


Título: Re: programa java
Publicado por: javieer en 7 Marzo 2019, 18:04 pm
gracias a todos por la respuesta, ya logré hacer que convirtiera el texto a asteriscos aunque ahora me falta una funcion booleana que cuando aciertes una letra desaparezca el asterisco como lo puedo hacer¿


Título: Re: programa java
Publicado por: spcruzaley en 8 Marzo 2019, 22:13 pm
Que tal javieer

No se como hiciste tu implementacion, pero aqui te dejo una propuesta que hice y que quiza puedas adaptar a tus necesidades.

Código
  1. public class Pruebas {
  2.  
  3.    private String palabra;
  4.    private char[] palabraEncriptada;
  5.  
  6.    public static void main(String[] args) {
  7.        Pruebas pruebas = new Pruebas("unapalabra");
  8.        pruebas.cifra();
  9.        pruebas.log();
  10.        pruebas.validarLetra('n');
  11.        pruebas.log();
  12.        pruebas.validarLetra('a');
  13.        pruebas.log();
  14.        pruebas.validarLetra('r');
  15.        pruebas.log();
  16.        pruebas.validarLetra('l');
  17.        pruebas.log();
  18.    }
  19.  
  20.    public Pruebas(String palabra) {
  21.        this.palabra = palabra;
  22.    }
  23.  
  24.    public void cifra() {
  25.        char[] asteriscos = new char[palabra.length()];
  26.        Arrays.fill(asteriscos, '*');
  27.        this.palabraEncriptada = Arrays.copyOf(asteriscos, asteriscos.length);
  28.    }
  29.  
  30.    public void validarLetra(char letra) {
  31.        int posicion = this.palabra.indexOf(letra);
  32.  
  33.        if(posicion >= 0) {
  34.            this.palabraEncriptada[posicion] = letra;
  35.        }
  36.    }
  37.  
  38.    public void log() {
  39.        System.out.println(Arrays.toString(this.palabraEncriptada));
  40.    }
  41. }
  42.  

Log de salida:
Código
  1. [*, *, *, *, *, *, *, *, *, *]
  2. [*, n, *, *, *, *, *, *, *, *]
  3. [*, n, a, *, *, *, *, *, *, *]
  4. [*, n, a, *, *, *, *, *, r, *]
  5. [*, n, a, *, *, l, *, *, r, *]
  6.  


Saludos.