Sie sind auf Seite 1von 5

ALGORITMOS CRIPTOGRFICOS

a) ALGORITMO CSAR.- En criptografa, el cifrado Csar, tambin conocido como


cifrado por desplazamiento, cdigo de Csar o desplazamiento de Csar, es una de las
tcnicas de codificacin ms simples y ms usadas. Es un tipo de cifrado por sustitucin
en el que una letra en el texto original es reemplazada por otra letra que se encuentra un
nmero fijo de posiciones ms adelante en el alfabeto. Por ejemplo, con un
desplazamiento de 3, la A sera sustituida por la D (situada 3 lugares a la derecha de la
A ), la B sera reemplazada por la E, etc. Este mtodo debe su nombre a Julio Csar, que
lo usaba para comunicarse con sus generales. El cifrado Csar muchas veces puede
formar parte de sistemas ms complejos de codificacin, como el cifrado Vigenre, e
incluso tiene aplicacin en el sistema ROT13. Como todos los cifrados de sustitucin
alfabtica simple, el cifrado Csar se descifra con facilidad y en la prctica no ofrece
mucha seguridad en la comunicacin.
EJEMPLO:
La transformacin se puede representar alineando dos alfabetos; el alfabeto cifrado es un
alfabeto normal que est desplazado un nmero determinado de posiciones hacia la
izquierda o la derecha. Por ejemplo, aqu el cifrado Csar est usando un desplazamiento
de seis espacios hacia la derecha:
Texto original: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Texto codificado: GHIJKLMNOPQRSTUVWXYZABCDEF
Para codificar un mensaje, simplemente se debe buscar cada letra de la lnea del texto
original y escribir la letra correspondiente en la lnea codificada. Para decodificarlo se
debe hacer lo contrario.
Texto original: WIKIPEDIA, LA ENCICLOPEDIA LIBRE
Texto codificado: CPVKJG, QG KSIIQUVKJG QHXK
Si x es la posicin de la letra que queremos cifrar, la posicin de la nueva letra vendr
dada por la frmula

f ( x )=( x +n ) mod p :
p= longitud del alfabeto (generalmente 26).
x= nmero asociado a la letra (1 para la A, 2 para la B, etc.).
n= clave, dependiendo de la cual cambiar el cdigo una vez codificado, su valor es 5.
b) MTODOS DE CIFRADO MONOALFABTICOS. Sustituyen cada letra por otra que ocupa la misma posicin en un alfabeto
desordenado y esta correspondencia se mantiene a lo largo de todo el mensaje.
As se consiguen tantas claves como posibilidades de alfabetos hay.
El problema est en cmo recordar la clave (el alfabeto desordenado).
El procedimiento es el siguiente:
Se busca una palabra (clave) fcil de recordar y se le quitan las letras
duplicadas.
SEGURIDAD SEGURIDA
Se aaden al final de la palabra las restantes letras del alfabeto (sin
duplicar letras). SEGURIDABCFH..................XYZ
Se ordenan en una matriz cuya primera fila es la palabra clave

SEGUR I DA
BCFH JK LM
NOPQTVWX
YZ
El
nuevo
alfabeto
se
lee
por
columnas:
SBNYECOZGFPUHQRJTIKVDLWAMX
Ejemplo: el mensaje ataque se convertira en SVSTDE
El sistema de criptoanlisis mejor para romper el algoritmo es el
estadstico.

c) MTODOS DE CIFRADO POLIALFABTICOS. Corresponde a la aplicacin cclica de n cifrados monoalfabticos, (de varios
abecedarios desordenados).
Un ejemplo tpico es el Cifrado de Vignere:
Dada una tabla con un alfabeto por cada letra del abecedario
Mtodo:
Se busca una palabra clave fcil de recordar.
Se escribe la palabra debajo del texto en claro, repitindose tantas
veces como sea necesario.
Cada letra del texto en claro se codifica con el alfabeto de la tabla
marcado por la letra inferior, o sea, la letra de la clave que
corresponde.
Ejemplo:
CLAVE: ADIOS
Texto en claro: E S T O E S C R I P T O L O G I A
Clave:
AD I O SA D I O SAD I O SAD
Criptograma
EVBD WS FZWHTRTCYID
d) CIFRADOS POR TRANSPOSICIN. Se basa en la reordenacin de las letras de un texto de acuerdo a una palabra
clave escogida que no contiene letras repetidas.
Mtodo:
Con la clave se numera las columnas, estando la columna 1 bajo la letra de
la clave ms cercana al inicio del alfabeto, y as sucesivamente.
El texto normal se escribe horizontalmente en filas.
El texto cifrado se lee por columnas, comenzando por la columna cuya letra
clave es ms baja
Se puede criptoanalizar efectuando un estudio estadstico sobre la frecuencia de
aparicin de pares y tripletas de smbolos.
Ejemplo:
Texto normal:
Este es un trabajo para la asignatura de Redes"
Clave: Video
Texto cifrado:
T ROAAA E EUA STDD SSTJR NAR NBPLIUEE EE AAAGR S

e) RELLENOS DE UNA VEZ. El mtodo consistira en:


Escoger una clave al azar.
Por otro lado se convierte el texto normal en una cadena de bits.
Se calcula el XOR de estas dos cadenas.
El texto cifrado es indescifrable ya que no proporciona ninguna informacin.
Problemas:
La clave no puede memorizarse.
La cantidad de datos que se puede transmitir est limitada a la cantidad de
clave disponible.
Es sensible a la prdida o insercin de caracteres si se pierde la sincrona
entre receptor y emisor.

ALGORITMO PROPIO.import java.util.*;


public class Encriptacion
{
public static void main(String arg[])
{
/*Realizo el algoritmo de encriptacin, que dado una palabra
en maysculas, se descifre de la siguiente manera*/
/*a)A cada carcter, al convertirlo en entero, se deber
restar en 64*/
/*b)Si el caracter convertido en entero mdulo de 3 resulta
0, se le concatena el entero con la letra X*/
/*c)Si resulta 1, se le concatena el entero con la letra Y*/
/*d)Si resulta 2, se le concatena el entero con la letra Z*/
Scanner en=new Scanner(System.in);
System.out.println("Por favor ingrese una palabra
mayscula");
String palabra=en.next();
String encriptacion="";
String auxiliar="";
for(int i=0;i<palabra.length();i++)
{
if((palabra.charAt(i)>='A' && palabra.charAt(i)<='Z')||
(palabra.charAt(i)==''))
{
int aux=(int)palabra.charAt(i)-64;
if(aux%3==0)
{
String aux1=aux+"";
auxiliar=aux1+'X'+"";
}
else
{
if(aux%3==1)
{
String aux1=aux+"";
auxiliar=aux1+'Y'+"";
}
else
{
if(aux%3==2)
{
String aux1=aux+"";
auxiliar=aux1+'Z'+"";
}
}
}
encriptacion+=auxiliar;
}
else
{
System.out.print("ERROR,SOLO LETRAS MAYUSCULAS");
break;
}
}

if(encriptacion!="")
{
System.out.println("--ENCRIPTANDO--");
System.out.println(encriptacion);
String desencriptacion="";
String auxiliar1=encriptacion;
String numero="";
for(int i=0;i<auxiliar1.length();i++)
{
if(auxiliar1.charAt(i)>='0'&&auxiliar1.charAt(i)<='9')
{
numero+=auxiliar1.charAt(i);
}
else
{
int num=Integer.parseInt(numero)+64;
numero="";
desencriptacion+=(char)num;
}
}
System.out.println("--DESENCRIPTANDO--");
System.out.print(desencriptacion);
}
}
}