Beruflich Dokumente
Kultur Dokumente
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
donde
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;
}
Clave: 13
IFYOUDONTKNOWWHEREYOUAREGOINGANYROADCANTAKEYOUTHEREZ
Descrifrado : 2
Clave: 24
IFYOUCANTEXPLAINITSIMPLYYOUDONTUNDERSTANDITWELLENOUGHO
Descrifrado : 3
Clave: 6
EDSGERDIJKSTRATALRABINWHITFIELDDIFFIEMARTINHELLMANNALANTU
RINGRONRIVESTADISHAMIRLEONARDADLEMANV
Descrifrado : 4
Clave: 17
LOOKUPINTHEAIRITSABIRDITSAPLANEITSSUPERMANHW