lunes, 2 de mayo de 2011

Encriptar Texto a Números

Necesito hacer un código para java donde ingrese un texto y lo encripte en números a mi gusto, una letra por un número expecífico, Ejemplo:

#
Ingreso: El Metropolitano así
Saluda : 25 7280131598641 6109
#
Porque,
#
  e = 2
  l = 5
  m = 7
  t = 8
  r = 0
  o = 1
  p = 3
  i = 9
  a = 6
  n = 4
  s = 10
#

Solución:
#
import javax.swing.JOptionPane;
 
public class PoC{
  public static void main(String[] args){

    String sString     = "";
    char sAlphabet[] = new char[28];
 
    sAlphabet[0] = '.';
    sAlphabet[1] = 'A';
    sAlphabet[2] = 'B';
    sAlphabet[3] = 'C';
    sAlphabet[4] = 'D';
    sAlphabet[5] = 'E';
    sAlphabet[6] = 'F';
    sAlphabet[7] = 'G';
    sAlphabet[8] = 'H';
    sAlphabet[9] = 'I';
    sAlphabet[10] = 'J';
    sAlphabet[11] = 'K';
    sAlphabet[12] = 'L';
    sAlphabet[13] = 'M';
    sAlphabet[14] = 'N';
    sAlphabet[15] = 'Ñ';
    sAlphabet[16] = 'O';
    sAlphabet[17] = 'P';
    sAlphabet[18] = 'Q';
    sAlphabet[19] = 'R';
    sAlphabet[20] = 'S';
    sAlphabet[21] = 'T';
    sAlphabet[22] = 'U';
    sAlphabet[23] = 'V';
    sAlphabet[24] = 'W';
    sAlphabet[25] = 'X';
    sAlphabet[26] = 'Y';
    sAlphabet[27] = 'Z';
 
    sString = JOptionPane.showInputDialog( "Ingrese el texto: " );

    sString = sString.toUpperCase();

    for( int i = 0; i < sString.length(); i++){
      if( sString.charAt(i) == ' ' ){
        System.out.print( " " );
      }else{
        for( int j = 0; j < sAlphabet.length; j++){
          if( sString.charAt(i) == sAlphabet[j] ){
            System.out.print( j );
          }
        }
      }
    }

  }
}

/* SALIDA
  shTareas@Ubuntu:~/Escritorio$ java PoC
  SH TAREAS
  208 211195120
*/
#
Observación: Los valores del array sAlphabet[] pueden ser cambiados siempre y cuando no exceda el limite del array, puedes agregarle más valores y añadirle la cantidad de caracteres en la declaración del array.

Sólo le veo un inconveniente y es qué, cuando desees desencriptar el valor, no se como le harás para identificar que por ejemplo, 123 sean 3 letras o 2, ya sea {1 = A, 2 = B, 3 = C} ó { 12 = L, 3 = C } ó { 1 = A, 23 = V }.

Quizás podrías implementar algún token o delimitador.

No hay comentarios:

Publicar un comentario