Tarea 5 Algoritmos Criptográficos

7
ALGORITMOS CRIPTOGRÁFICOS a) ALGORITMO CÉSAR.- En criptografía, el cifrado César, también conocido como cifrado por desplazamiento, código de César o desplazamiento de César, es una de las técnicas de codificación más simples y más usadas. Es un tipo de cifrado por sustitución en el que una letra en el texto original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto. Por ejemplo, con un desplazamiento de 3, la A sería sustituida por la D (situada 3 lugares a la derecha de la A ), la B sería reemplazada por la E, etc. Este método debe su nombre a Julio César, que lo usaba para comunicarse con sus generales. El cifrado César muchas veces puede formar parte de sistemas más complejos de codificación, como el cifrado Vigenère, e incluso tiene aplicación en el sistema ROT13. Como todos los cifrados de sustitución alfabética simple, el cifrado César se descifra con facilidad y en la práctica no ofrece mucha seguridad en la comunicación. EJEMPLO: La transformación se puede representar alineando dos alfabetos; el alfabeto cifrado es un alfabeto normal que está desplazado un número determinado de posiciones hacia la izquierda o la derecha. Por ejemplo, aquí el cifrado César está usando un desplazamiento de seis espacios hacia la derecha: Texto original: ABCDEFGHIJKLMNÑOPQRSTUVWXYZ Texto codificado: GHIJKLMNÑOPQRSTUVWXYZABCDEF Para codificar un mensaje, simplemente se debe buscar cada letra de la línea del texto original y escribir la letra correspondiente en la línea codificada. Para decodificarlo se debe hacer lo contrario. Texto original: WIKIPEDIA, LA ENCICLOPEDIA LIBRE Texto codificado: CÑPÑVKJÑG, QG KSIÑIQUVKJÑG QÑHXK Si x es la posición de la letra que queremos cifrar, la posición de la nueva letra vendrá dada por la fórmula f ( x )=( x+n ) modp: p= longitud del alfabeto (generalmente 26). x= número asociado a la letra (1 para la A, 2 para la B, etc.).

description

Algoritmos criptográficos más importantes

Transcript of Tarea 5 Algoritmos Criptográficos

Page 1: Tarea 5 Algoritmos Criptográficos

ALGORITMOS CRIPTOGRÁFICOS

a) ALGORITMO CÉSAR.- En criptografía, el cifrado César, también conocido como cifrado por desplazamiento, código de César o desplazamiento de César, es una de las técnicas de codificación más simples y más usadas. Es un tipo de cifrado por sustitución en el que una letra en el texto original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto. Por ejemplo, con un desplazamiento de 3, la A sería sustituida por la D (situada 3 lugares a la derecha de la A ), la B sería reemplazada por la E, etc. Este método debe su nombre a Julio César, que lo usaba para comunicarse con sus generales. El cifrado César muchas veces puede formar parte de sistemas más complejos de codificación, como el cifrado Vigenère, e incluso tiene aplicación en el sistema ROT13. Como todos los cifrados de sustitución alfabética simple, el cifrado César se descifra con facilidad y en la práctica no ofrece mucha seguridad en la comunicación.EJEMPLO:La transformación se puede representar alineando dos alfabetos; el alfabeto cifrado es un alfabeto normal que está desplazado un número determinado de posiciones hacia la izquierda o la derecha. Por ejemplo, aquí el cifrado César está usando un desplazamiento de seis espacios hacia la derecha:Texto original: ABCDEFGHIJKLMNÑOPQRSTUVWXYZTexto codificado: GHIJKLMNÑOPQRSTUVWXYZABCDEFPara codificar un mensaje, simplemente se debe buscar cada letra de la línea del texto original y escribir la letra correspondiente en la línea codificada. Para decodificarlo se debe hacer lo contrario.Texto original: WIKIPEDIA, LA ENCICLOPEDIA LIBRETexto codificado: CÑPÑVKJÑG, QG KSIÑIQUVKJÑG QÑHXKSi x es la posición de la letra que queremos cifrar, la posición de la nueva letra vendrá dada por la fórmula

f ( x )= (x+n )mod p:

p= longitud del alfabeto (generalmente 26).x= número asociado a la letra (1 para la A, 2 para la B, etc.).n= clave, dependiendo de la cual cambiará el código una vez codificado, su valor es 5.b) MÉTODOS DE CIFRADO MONOALFABÉTICOS.-

Sustituyen cada letra por otra que ocupa la misma posición 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 cómo recordar la clave (el alfabeto desordenado). El procedimiento es el siguiente:

Se busca una palabra (clave) fácil de recordar y se le quitan las letras duplicadas.SEGURIDAD → SEGURIDA

Se añaden 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 claveS E G U R I D A

Page 2: Tarea 5 Algoritmos Criptográficos

B C F H J K L MN O P Q T V W XY Z

El nuevo alfabeto se lee por columnas: SBNYECOZGFPUHQRJTIKVDLWAMX

Ejemplo: el mensaje ataque se convertiría en SVSTDE El sistema de criptoanálisis mejor para romper el algoritmo es el

estadístico.

c) MÉTODOS DE CIFRADO POLIALFABÉTICOS.- Corresponde a la aplicación cíclica de n cifrados monoalfabéticos, (de varios

abecedarios desordenados). Un ejemplo típico es el Cifrado de Vigènere:

Dada una tabla con un alfabeto por cada letra del abecedario Método:

Se busca una palabra clave fácil de recordar. Se escribe la palabra debajo del texto en claro, repitiéndose 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: ADIOSTexto en claro: E S T O E S C R I P T O L O G I AClave: A D I O S A D I O S A D I O S A DCriptograma E V B D W S F Z W H T R T C Y I D

d) CIFRADOS POR TRANSPOSICIÓN.- Se basa en la reordenación de las letras de un texto de acuerdo a una palabra

clave escogida que no contiene letras repetidas. Método:

Con la clave se numera las columnas, estando la columna 1 bajo la letra de la clave más 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 más baja Se puede criptoanalizar efectuando un estudio estadístico sobre la frecuencia de

aparición de pares y tripletas de símbolos. 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

Page 3: Tarea 5 Algoritmos Criptográficos

e) RELLENOS DE UNA VEZ.- El método consistiría 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 información. 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 pérdida o inserción de caracteres si se pierde la sincronía

entre receptor y emisor.

Page 4: Tarea 5 Algoritmos Criptográficos

ALGORITMO PROPIO.-

import java.util.*;public class Encriptacion { public static void main(String arg[]) { /*Realizo el algoritmo de encriptación, que dado una palabra en mayúsculas, 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 módulo 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 mayúscula"); 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; } }

Page 5: Tarea 5 Algoritmos Criptográficos

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); } }}