domingo, 10 de junio de 2012

Método de Cifrado Bifido o de Polibio en java



es uncifrado fraccionario. Es decir que cada letra viene representada por una o más letras o símbolos, y donde se trabaja con estos símbolos más que con las letras mismas.

El método comienza con la utilización de un alfabeto ordenado o desordenado (depende del grado de dificulad que se le pretenda dar en su descifrado)
en una matriz o tabla de 5x5nos vemos obligados a cifrar de la misma forma la I y la J. El contexto nos permitirá distinguir cual de las dos letras se pretendía cifrar.
Para cifrar el texto se escriben los equivalentes numéricos de cada letra, utilizando sus "coordenadas".

Por ejemplo:HOLA MUNDO, genera las siguientes coordenadas (f,c)233431113245331434, y para proceder con la encriptacion la cadena de coordenadas resultantes es dividida en dos:

233431113

245331434

y se forma una nueva cadena de coordenadas 22 34 35 43 33 11 14 13 34 las cuales formaran el nuevomensaje encriptado GOPS NADCO.

métodospara cifrar
                      public static String Encriptar(String t){
t = limpia(t);
String nt="";
String enc="";
int fila ;
int col;
//para cada caracter se extrae el par de numeros correspondientes en la matriz
for(int i=0; it.length();i++){
nt = nt + dame_posicion(t.charAt(i));
}
//Ahora se realiza el proceso de encriptacion
for(int i=0;int.length()/2;i++){
fila = Integer.parseInt(String.valueOf(nt.charAt(i)));
col = Integer.parseInt(String.valueOf(nt.charAt(i + nt.length()/2)));
enc = enc + String.valueOf(almacena[fila][col]);
}
enc=arregla(enc);
return enc;
}



                    public static String Desencriptar(String t){
t=limpia(t);
String nt="";
String tmp1="";
String tmp2="";
boolean b=true;
//para cada caracter se extrae el par de numeros correspondientes en la matriz
for(int i=0; it.length();i++){
nt = nt + dame_posicion(t.charAt(i));
}
//como la cadena de numeros se encuentra encriptada, se procede
//a su nuevo ordenamiento
for(int i=0;int.length();i++){
if(b){
tmp1= tmp1 + nt.charAt(i);
b=false;
}
else
{
tmp2= tmp2 + nt.charAt(i);
b=true;
}
}
nt= tmp1+tmp2;
tmp1="";
int fila;
int col;
//ahora que ya se tiene a la cadena de numeros con el orden original
//se procede a reconstruir el mensaje
for(int i=0; int.length();i+=2){
fila = Integer.parseInt(String.valueOf(nt.charAt(i)));
col = Integer.parseInt(String.valueOf(nt.charAt(i+1)));
tmp1 = tmp1 + String.valueOf(almacena[fila][col]);
}
tmp1=arregla(tmp1);
return tmp1;
}


Si lo imaginas,lo programas


No hay comentarios:

Publicar un comentario