Sie sind auf Seite 1von 7

INSTITUTO POLITECNICO NACIONAL

ESCUELA SUPERIOR DE CMPUTO

Prctica 2:
Shift Cipher

INTEGRANTES:
Aguirre Cruz Eder Jonathan
Sauls Cortes Jhonatan
MATERIA: Cryptography
PROFESORA: Daz Santiago Sandra
GRUPO: 3CM2
FECHA DE ENTREGA: 15 09- 2015

Teora
Shift Cipher
Este mtodo consiste en sustituir cada letra del texto original por otra situada k
posiciones delante de ella en el alfabeto que se est utilizando. Este mtodo es la
generalizacin del cifrado del Csar ya que ahora el desplazamiento (k) en vez de
ser fijo (3 posiciones) puede variar entre el rango: 0 k < n, en donde n es el nmero
de caracteres del alfabeto. El desplazamiento k es la clave del sistema
La llave (clave) de este cifrado es el valor de k que se ha usado para cifrar el texto,
y este valor debe permanecer secreto, ya que si se hace pblico, cualquiera podra
descifrar el texto de forma fcil, con slo desplazar a la izquierda las letras del texto
cifrado k lugares a la izquierda.
A cada letra se le asigna un cdigo numrico que no es ms que su posicin en el
alfabeto, la codificacin de las letras es por tanto:

ABCDEFGHIJK L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
De una forma ms formal el cifrado por desplazamiento se puede definir como:
Sea A el alfabeto que contiene 26 caracteres, dnde el nmero de caracteres
siempre
determinar
la
longitud
del
alfabeto.
La funcin de encriptacin E
funciona con una clave K, la cual est determinada por el valor de la rotacin dentro
del alfabeto de la parte del mensaje. El conjunto C es el conjunto de las cifras, las
cuales pertenecen tambin al charset. Fijada un clave K, la definicin de E es la
siguiente

El Descifrar es con la funcin

donde

Ciphertext only attack:


El ataque conocido texto cifrado o texto cifrado nico ataque (COA) es un mtodo
de ataque utilizado en criptoanlisis cuando el atacante tiene acceso a un conjunto
dado de texto cifrado (s). El atacante no tiene acceso al texto claro en este mtodo
correspondiente; sin embargo, COA tiene xito cuando corresponde texto plano se
puede determinar a partir de un conjunto dado de texto cifrado. En ocasiones, la
clave utilizada para cifrar el texto cifrado se puede determinar a partir de este
ataque.

Recursos del Ciphertext only attack:


Este caso es cuando el criptoanalista slo conoce el criptograma y el algoritmo con
que fue generado; con esta informacin pretende obtener el texto en claro.

WEBGRAFA:

http://redyseguridad.fi-p.unam.mx/proyectos/criptografia/criptografia/index.php/2-tecnicasclasicas-de-cifrado/22-opereraciones-utilizadas/222-algoritmos-desustitucion?showall=&start=6
http://redyseguridad.fi-p.unam.mx/proyectos/criptografia/criptografia/index.php/1-panoramageneral/14-ataques/142-ataques-a-los-metodos-de-cifrado
http://www.kriptopolis.com/criptografia-clasica-vi
http://campuscurico.utalca.cl/~rgarrido/cursos/mct_2006/clases_07_04.pdf
http://www.segu-info.com.ar/proyectos/p1_ataques.htm

Cdigo Fuente
CifrarDescifrar.c
#include "ShiftCipher.h"
void Menu(){
printf("\n Bienvenidos al Shift Cipher");
printf("\n 1.- Cifrar un archivo");
printf("\n 2.- Descifrar un archivo");
printf("\n 3.- Salir");
printf("\n Escoge la opcion que desees: ");
}
void Cifrar(int k){
char c,cif[10],tcif[10];
FILE *archivo,*result;
printf("\n Por favor ingresa el nombre del archivo a cifrar ya sea text2, text3 con la
extension .txt: ");
scanf("%s",cif);
printf("\n Por favor ingresa el nombre del archivo donde se va a guardar el texto
cifrado con la extension .txt: ");
scanf("%s",tcif);
archivo=fopen(cif,"r");
result=fopen(tcif,"w");
while(!feof(archivo)){
c=fgetc(archivo);
if(c==32){
printf("%c",c);
fprintf(result,"%c",c);
}
else{
c=c-65;
c=c+k;
if(c<0){
c=abs(c);
c=26-(c%26);
}
else if(c>0)
c=c%26;
c=c+65;
printf("%c",c);
fprintf(result,"%c",c);
}
}
fclose(result);
fclose(archivo);
}
void Descifrar(){
char c,dcif[10],tdcif[10];
FILE *archivo,*result;
int k=0;

printf("\n Por favor ingresa el nombre del archivo a descifrar ya sea c1, c2, c3, c4
con la extension .txt: ");
scanf("%s",dcif);
printf("\n Por favor ingresa el nombre del archivo donde se va a guardar el texto
descifrado con la extension .txt: ");
scanf("%s",tdcif);
result=fopen(tdcif,"w");
for(k=0;k<26;k++){
archivo=fopen(dcif,"r");
printf("%d :",k);
while(!feof(archivo)){
c=fgetc(archivo);
if(c==32){
printf("%c",c);
fprintf(result,"%c",c);
}
else{
c=c-65;
c=c-k;
if(c<0){
c=abs(c);
c=26-(c%26);
}
else
c=c%26;
c=c+65;
printf("%c",c);
fprintf(result,"%c",c);
}
}
fprintf(result,"\n");
printf("\n");
fclose(archivo);
}
fclose(result);
}

Shift Cipher.h
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Menu();
void Cifrar(int k);
void Descifrar();

AppCifrado.c
#include "ShiftCipher.h"
#include "CifrarDescifrar.c"
#include <stdio.h>
int main(){
int x,k,opc;
x=1;
while(x==1){
system("cls");
Menu();
scanf("%d",&opc);
switch(opc){
case 1:
system("cls");
printf("\n \n \n Aqui vas a poder cifrar un archivo");
printf("\n \n Cual va a ser el valor de la k: ");
scanf("%d",&k);
Cifrar(k);
printf("\n \n Quieres regresar al menu SI(1)/NO(2)?: ");
scanf("%d",&x);
break;
case 2:
system("cls");
printf("\n \n \n Aqui vas a poder descifrar un archivo");
Descifrar();
printf("\n \n Quieres regresar al menu SI(1)/NO(2)?: ");
scanf("%d",&x);
break;
case 3:
system("cls");
printf("\n \n Hasta luego!");
return 0;
break;
default:
system("cls");
printf("\n Opcion invalida!");
printf("\n \n Quieres regresar al menu SI(1)/NO(2)?: ");
scanf("%d",&x);
break;
}
}
printf("Hasta luego!");
return 0;
}

Textos en claro y claves de descifrado


Descrifrado : 1

Clave: 13

IFYOUDONTKNOWWHEREYOUAREGOINGANYROADCANTAKEYOUTHEREZ

Descrifrado : 2

Clave: 24

IFYOUCANTEXPLAINITSIMPLYYOUDONTUNDERSTANDITWELLENOUGHO

Descrifrado : 3

Clave: 6

EDSGERDIJKSTRATALRABINWHITFIELDDIFFIEMARTINHELLMANNALANTU
RINGRONRIVESTADISHAMIRLEONARDADLEMANV

Descrifrado : 4

Clave: 17

LOOKUPINTHEAIRITSABIRDITSAPLANEITSSUPERMANHW

Das könnte Ihnen auch gefallen