SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
Criptografía
 “κρύπτω krypto, «oculto» + γράφω graphos, «escribir» = «escritura oculta»”

Este curioso arte se avoca a cifrar y descifrar información mediante técnicas
especiales, con el fin de que un mensaje sólo pueda ser leído por la persona
a la que va dirigido.

Ahora veremos el desarrollo e implementación de un algoritmo de cifrado en
C++, empecemos con esta idea:
Vamos a sumar las representaciones numéricas del primer dígito de la clave
y el primer dígito del „texto en claro‟ (mensaje legible en la jerga de la
criptografía) obteniendo así el primer dígito del texto cifrado. Este proceso se
realiza de igual forma con todos los dígitos del archivo tal y como muestra la
imagen:




Ahora, vamos a implementar esto en un programa de C++:

// CIDESOFT/Fredy Rojas/codificador1.cpp
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<fstream>

using namespace std;

const int MAXNOMB = 255; //maximo de caracteres para el
nombre

int main()
{
    char archivo_original[MAXNOMB];
    char extension[10];
    char archivo_cifrado[MAXNOMB];
    char clave[255];
    char car;
    int ch;
cout<<"Ingrese el nombre del archivo a cifrar(sin
extension): ";
    cin>>archivo_original;
    cout<<"Ingrese la extension del archivo a cifrar: ";
    cin>>extension;
    strcpy(archivo_cifrado,archivo_original);
    strcat(archivo_original,".");
    strcat(archivo_original,extension);
    strcat(archivo_cifrado,".cifx");

   ifstream archivo_in;
   ofstream archivo_out;

   archivo_in.open(archivo_original);
   archivo_out.open(archivo_cifrado);

    if (archivo_in.fail()) //verificar si se abrio con
exito
    {
       cout<<"El archivo no se puede abrir con exiton" 
       <<" verifique si el archivo en realidad existen";
       system("PAUSE");
       exit(1);
    }

    if (archivo_out.fail()) //verificar si se creo con
exito
    {
       cout<<"El archivo no se puede crear con exiton";
       system("PAUSE");
       exit(1);
    }

   cout<<"Ingrese clave: ";
   cin>>clave;
   cout<<endl<<endl;

    int idc; //indice de la ubicacion de la letra de la
clave
    idc=0;
    int lon; //longitud de la clave
    lon = strlen(clave)-1;

   while( ( ch = archivo_in.peek() ) != EOF )
   {
          archivo_in.get(car);
          car = car + clave[idc];
          if( idc == lon )
              idc = -1;
          idc++;
          archivo_out<<car;
}

     archivo_in.close();
     archivo_out.close();

    cout<<"nEl archivo ha sido cifrado
satisfactoriamenete."<<endl<<endl;

     system ("PAUSE");
     return 0;
}


Muy bien, esto ha sido el cifrado, veamos ahora descifrado, ya que es
simplemente el proceso inverso, solo les presento la idea y el código:




// CIDESOFT/Fredy Rojas/decodificador1.cpp
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<fstream>

using namespace std;

const int MAXNOMB = 255; //maximo de caracteres para el
nombre

int main()
{
    char archivo_original[MAXNOMB];
    char extension[10];
    char archivo_cifrado[MAXNOMB];
    char clave[255];
    char car;
    int ch;

    cout<<"Ingrese el nombre del archivo a descifrar(sin
extension): ";
    cin>>archivo_cifrado;
cout<<"Ingrese la extension del archivo original: ";
   cin>>extension;
   strcpy(archivo_original,archivo_cifrado);
   strcat(archivo_original,".");
   strcat(archivo_original,extension);
   strcat(archivo_cifrado,".cifx");

   ifstream archivo_in;
   ofstream archivo_out;

   archivo_in.open(archivo_cifrado);
   archivo_out.open(archivo_original);

    if (archivo_in.fail()) //verificar si se abrio con
exito
    {
       cout<<"El archivo no se puede abrir con exiton" 
       <<" verifique si el archivo en realidad existen";
       system("PAUSE");
       exit(1);
    }

    if (archivo_out.fail()) //verificar si se creo con
exito
    {
       cout<<"El archivo no se puede crear con exiton";
       system("PAUSE");
       exit(1);
    }

   cout<<"nIngrese clave: ";
   cin>>clave;
   cout<<endl<<endl;

    int idc; //indice de la ubicacion de la letra de la
clave
    idc=0;
    int lon; //longitud de la clave
    lon = strlen(clave)-1;

   while( ( ch = archivo_in.peek() ) != EOF )
   {
          archivo_in.get(car);
          car = car - clave[idc];
          if( idc == lon )
              idc = -1;
          idc++;
          archivo_out<<car;
   }

   archivo_in.close();
archivo_out.close();

    cout<<"nEl archivo ha sido descifrado
satisfactoriamenete."<<endl<<endl;

     system ("PAUSE");
     return 0;
}


Este „codificador‟ y „decodificador‟ tratan el archivo a cifrar como un archivo
de texto, por ello es que solamente pueden cifrar y descifrar archivos de este
tipo.
Se puede implementar el mismo algoritmo en C++, pero tratando el archivo
a cifrar como un archivo binario, esto significa cifrar cada BIT del archivo sin
importar que sea texto o alguna otra codificación, lo que nos permitiría cifrar
absolutamente cualquier tipo de archivo („.txt‟, „.jpg‟, „.mp3‟, „.wmv‟, etc.)
¿Quieres saber cómo?, visita:
http://cidesoft.com.pe/blogs/integrantes/fredy-rojas-frants/

Contenu connexe

Tendances (19)

1.1 C2Ruby - ladrillos
1.1 C2Ruby - ladrillos 1.1 C2Ruby - ladrillos
1.1 C2Ruby - ladrillos
 
Doxygen
DoxygenDoxygen
Doxygen
 
Openssl
OpensslOpenssl
Openssl
 
Suma de numeros extensos con listas doblemente enlazadas
Suma de numeros extensos con listas doblemente enlazadasSuma de numeros extensos con listas doblemente enlazadas
Suma de numeros extensos con listas doblemente enlazadas
 
Desde el DVR hasta la cocina
Desde el DVR hasta la cocinaDesde el DVR hasta la cocina
Desde el DVR hasta la cocina
 
Configuracion
ConfiguracionConfiguracion
Configuracion
 
Package contactos para java
Package contactos para javaPackage contactos para java
Package contactos para java
 
Cedula
CedulaCedula
Cedula
 
Php slideshare
Php slidesharePhp slideshare
Php slideshare
 
Prog
ProgProg
Prog
 
Manejo de archivos
Manejo de archivosManejo de archivos
Manejo de archivos
 
Introducción a Groovy
Introducción a GroovyIntroducción a Groovy
Introducción a Groovy
 
Encriptación
EncriptaciónEncriptación
Encriptación
 
Do while
Do whileDo while
Do while
 
Groovy
GroovyGroovy
Groovy
 
Grails
GrailsGrails
Grails
 
Visual fox pro 9.0 y sqlserver 2005
Visual fox pro 9.0 y sqlserver 2005Visual fox pro 9.0 y sqlserver 2005
Visual fox pro 9.0 y sqlserver 2005
 
Progra
PrograProgra
Progra
 
Trabajo Sandoval1
Trabajo Sandoval1Trabajo Sandoval1
Trabajo Sandoval1
 

En vedette (20)

Regras Dos Homens
Regras Dos HomensRegras Dos Homens
Regras Dos Homens
 
Revista Renascidos em Pentecostes
Revista Renascidos em PentecostesRevista Renascidos em Pentecostes
Revista Renascidos em Pentecostes
 
El Carnaval en Europa
El Carnaval en EuropaEl Carnaval en Europa
El Carnaval en Europa
 
Consulta ugel
Consulta ugelConsulta ugel
Consulta ugel
 
RANDO
RANDORANDO
RANDO
 
Aprendeaamardeverdad
AprendeaamardeverdadAprendeaamardeverdad
Aprendeaamardeverdad
 
Semanal audiencia y notoriedad sem49_2014
Semanal audiencia y notoriedad sem49_2014Semanal audiencia y notoriedad sem49_2014
Semanal audiencia y notoriedad sem49_2014
 
Atletismo
AtletismoAtletismo
Atletismo
 
Mere
MereMere
Mere
 
Poster de la 4. Fiesta de la Planta
Poster de la 4. Fiesta de la PlantaPoster de la 4. Fiesta de la Planta
Poster de la 4. Fiesta de la Planta
 
Modelo de diseño
Modelo de diseñoModelo de diseño
Modelo de diseño
 
생태도시
생태도시생태도시
생태도시
 
Yo acepto
Yo aceptoYo acepto
Yo acepto
 
Motivacion aceptame como_soy_np
Motivacion aceptame como_soy_npMotivacion aceptame como_soy_np
Motivacion aceptame como_soy_np
 
Proyecto Eco Guadalinfo
Proyecto  Eco GuadalinfoProyecto  Eco Guadalinfo
Proyecto Eco Guadalinfo
 
Mkt
MktMkt
Mkt
 
Partícula
PartículaPartícula
Partícula
 
Capitulo 26
Capitulo 26Capitulo 26
Capitulo 26
 
Digital Sistemas O melhor sistema de gerenciamento Para Distribuidora Farma e...
Digital Sistemas O melhor sistema de gerenciamento Para Distribuidora Farma e...Digital Sistemas O melhor sistema de gerenciamento Para Distribuidora Farma e...
Digital Sistemas O melhor sistema de gerenciamento Para Distribuidora Farma e...
 
e.f
e.fe.f
e.f
 

Similaire à Criptografía_Implementación_Algoritmo_Cifrado_C

Informe minishell
Informe minishellInforme minishell
Informe minishellAlex Pin
 
Lw2010 Pedro Valera
Lw2010 Pedro ValeraLw2010 Pedro Valera
Lw2010 Pedro Valeraguestf280e2
 
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En RedesLw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redesguest5d7f33c
 
Unidad16 Codigof1
Unidad16 Codigof1Unidad16 Codigof1
Unidad16 Codigof1martha leon
 
Ejemplos Importantisimo
Ejemplos  ImportantisimoEjemplos  Importantisimo
Ejemplos Importantisimomartha leon
 
Ej1 t2 l3-1
Ej1 t2 l3-1Ej1 t2 l3-1
Ej1 t2 l3-1jvidalcc
 
Coloreo de grafos
Coloreo de grafosColoreo de grafos
Coloreo de grafosJorge
 
Working with Files, Streams, and Serialization.pdf
Working with Files, Streams, and Serialization.pdfWorking with Files, Streams, and Serialization.pdf
Working with Files, Streams, and Serialization.pdfeudilac1
 
Python Tutorial Presentation
Python Tutorial PresentationPython Tutorial Presentation
Python Tutorial Presentationguestccc92ad
 
Quasi - Practicas de Programacion en C
Quasi - Practicas de Programacion en CQuasi - Practicas de Programacion en C
Quasi - Practicas de Programacion en Cdegarden
 
Algoritmos Para Encriptar Claves
Algoritmos Para Encriptar ClavesAlgoritmos Para Encriptar Claves
Algoritmos Para Encriptar ClavesDiana Yánez
 

Similaire à Criptografía_Implementación_Algoritmo_Cifrado_C (20)

Alfabeto
AlfabetoAlfabeto
Alfabeto
 
Informe minishell
Informe minishellInforme minishell
Informe minishell
 
Lw2010 Pedro Valera
Lw2010 Pedro ValeraLw2010 Pedro Valera
Lw2010 Pedro Valera
 
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En RedesLw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
 
Ficheros C++
Ficheros C++Ficheros C++
Ficheros C++
 
7... automata de pila
7... automata de pila7... automata de pila
7... automata de pila
 
ARCHIVOS_Dom.pdf
ARCHIVOS_Dom.pdfARCHIVOS_Dom.pdf
ARCHIVOS_Dom.pdf
 
procesos
procesosprocesos
procesos
 
Unidad16 Codigof1
Unidad16 Codigof1Unidad16 Codigof1
Unidad16 Codigof1
 
Ejemplos Importantisimo
Ejemplos  ImportantisimoEjemplos  Importantisimo
Ejemplos Importantisimo
 
Ej1 t2 l3-1
Ej1 t2 l3-1Ej1 t2 l3-1
Ej1 t2 l3-1
 
Practica 5
Practica 5Practica 5
Practica 5
 
Coloreo de grafos
Coloreo de grafosColoreo de grafos
Coloreo de grafos
 
Tutorial C++
Tutorial C++Tutorial C++
Tutorial C++
 
Working with Files, Streams, and Serialization.pdf
Working with Files, Streams, and Serialization.pdfWorking with Files, Streams, and Serialization.pdf
Working with Files, Streams, and Serialization.pdf
 
Python Tutorial Presentation
Python Tutorial PresentationPython Tutorial Presentation
Python Tutorial Presentation
 
Quasi - Practicas de Programacion en C
Quasi - Practicas de Programacion en CQuasi - Practicas de Programacion en C
Quasi - Practicas de Programacion en C
 
Los mejores trucos de Asterisk
Los mejores trucos de AsteriskLos mejores trucos de Asterisk
Los mejores trucos de Asterisk
 
Cesar lenguaje c_
Cesar lenguaje c_Cesar lenguaje c_
Cesar lenguaje c_
 
Algoritmos Para Encriptar Claves
Algoritmos Para Encriptar ClavesAlgoritmos Para Encriptar Claves
Algoritmos Para Encriptar Claves
 

Plus de Leroy Merlin Tarragona (9)

Copia de Tarjeta de Presentacion
Copia de Tarjeta de PresentacionCopia de Tarjeta de Presentacion
Copia de Tarjeta de Presentacion
 
Francesc Pujols i Morgades  
Francesc Pujols i Morgades   Francesc Pujols i Morgades  
Francesc Pujols i Morgades  
 
ANÁLISIS POR ELEMENTOS FINITOS DE UN ENSAMBLE EN AUTODESK INVENTOR 2010
ANÁLISIS POR ELEMENTOS FINITOS DE UN ENSAMBLE EN AUTODESK INVENTOR 2010ANÁLISIS POR ELEMENTOS FINITOS DE UN ENSAMBLE EN AUTODESK INVENTOR 2010
ANÁLISIS POR ELEMENTOS FINITOS DE UN ENSAMBLE EN AUTODESK INVENTOR 2010
 
Tarjeta de Presentacion
Tarjeta de PresentacionTarjeta de Presentacion
Tarjeta de Presentacion
 
autocandidatura revisada
autocandidatura revisadaautocandidatura revisada
autocandidatura revisada
 
MEDI AMBIENT
MEDI AMBIENTMEDI AMBIENT
MEDI AMBIENT
 
EDAR
EDAREDAR
EDAR
 
La zona 22@
La zona 22@La zona 22@
La zona 22@
 
PONT DEL DIABLE
PONT DEL DIABLEPONT DEL DIABLE
PONT DEL DIABLE
 

Criptografía_Implementación_Algoritmo_Cifrado_C

  • 1. Criptografía “κρύπτω krypto, «oculto» + γράφω graphos, «escribir» = «escritura oculta»” Este curioso arte se avoca a cifrar y descifrar información mediante técnicas especiales, con el fin de que un mensaje sólo pueda ser leído por la persona a la que va dirigido. Ahora veremos el desarrollo e implementación de un algoritmo de cifrado en C++, empecemos con esta idea: Vamos a sumar las representaciones numéricas del primer dígito de la clave y el primer dígito del „texto en claro‟ (mensaje legible en la jerga de la criptografía) obteniendo así el primer dígito del texto cifrado. Este proceso se realiza de igual forma con todos los dígitos del archivo tal y como muestra la imagen: Ahora, vamos a implementar esto en un programa de C++: // CIDESOFT/Fredy Rojas/codificador1.cpp #include<iostream> #include<stdlib.h> #include<string.h> #include<fstream> using namespace std; const int MAXNOMB = 255; //maximo de caracteres para el nombre int main() { char archivo_original[MAXNOMB]; char extension[10]; char archivo_cifrado[MAXNOMB]; char clave[255]; char car; int ch;
  • 2. cout<<"Ingrese el nombre del archivo a cifrar(sin extension): "; cin>>archivo_original; cout<<"Ingrese la extension del archivo a cifrar: "; cin>>extension; strcpy(archivo_cifrado,archivo_original); strcat(archivo_original,"."); strcat(archivo_original,extension); strcat(archivo_cifrado,".cifx"); ifstream archivo_in; ofstream archivo_out; archivo_in.open(archivo_original); archivo_out.open(archivo_cifrado); if (archivo_in.fail()) //verificar si se abrio con exito { cout<<"El archivo no se puede abrir con exiton" <<" verifique si el archivo en realidad existen"; system("PAUSE"); exit(1); } if (archivo_out.fail()) //verificar si se creo con exito { cout<<"El archivo no se puede crear con exiton"; system("PAUSE"); exit(1); } cout<<"Ingrese clave: "; cin>>clave; cout<<endl<<endl; int idc; //indice de la ubicacion de la letra de la clave idc=0; int lon; //longitud de la clave lon = strlen(clave)-1; while( ( ch = archivo_in.peek() ) != EOF ) { archivo_in.get(car); car = car + clave[idc]; if( idc == lon ) idc = -1; idc++; archivo_out<<car;
  • 3. } archivo_in.close(); archivo_out.close(); cout<<"nEl archivo ha sido cifrado satisfactoriamenete."<<endl<<endl; system ("PAUSE"); return 0; } Muy bien, esto ha sido el cifrado, veamos ahora descifrado, ya que es simplemente el proceso inverso, solo les presento la idea y el código: // CIDESOFT/Fredy Rojas/decodificador1.cpp #include<iostream> #include<stdlib.h> #include<string.h> #include<fstream> using namespace std; const int MAXNOMB = 255; //maximo de caracteres para el nombre int main() { char archivo_original[MAXNOMB]; char extension[10]; char archivo_cifrado[MAXNOMB]; char clave[255]; char car; int ch; cout<<"Ingrese el nombre del archivo a descifrar(sin extension): "; cin>>archivo_cifrado;
  • 4. cout<<"Ingrese la extension del archivo original: "; cin>>extension; strcpy(archivo_original,archivo_cifrado); strcat(archivo_original,"."); strcat(archivo_original,extension); strcat(archivo_cifrado,".cifx"); ifstream archivo_in; ofstream archivo_out; archivo_in.open(archivo_cifrado); archivo_out.open(archivo_original); if (archivo_in.fail()) //verificar si se abrio con exito { cout<<"El archivo no se puede abrir con exiton" <<" verifique si el archivo en realidad existen"; system("PAUSE"); exit(1); } if (archivo_out.fail()) //verificar si se creo con exito { cout<<"El archivo no se puede crear con exiton"; system("PAUSE"); exit(1); } cout<<"nIngrese clave: "; cin>>clave; cout<<endl<<endl; int idc; //indice de la ubicacion de la letra de la clave idc=0; int lon; //longitud de la clave lon = strlen(clave)-1; while( ( ch = archivo_in.peek() ) != EOF ) { archivo_in.get(car); car = car - clave[idc]; if( idc == lon ) idc = -1; idc++; archivo_out<<car; } archivo_in.close();
  • 5. archivo_out.close(); cout<<"nEl archivo ha sido descifrado satisfactoriamenete."<<endl<<endl; system ("PAUSE"); return 0; } Este „codificador‟ y „decodificador‟ tratan el archivo a cifrar como un archivo de texto, por ello es que solamente pueden cifrar y descifrar archivos de este tipo. Se puede implementar el mismo algoritmo en C++, pero tratando el archivo a cifrar como un archivo binario, esto significa cifrar cada BIT del archivo sin importar que sea texto o alguna otra codificación, lo que nos permitiría cifrar absolutamente cualquier tipo de archivo („.txt‟, „.jpg‟, „.mp3‟, „.wmv‟, etc.) ¿Quieres saber cómo?, visita: http://cidesoft.com.pe/blogs/integrantes/fredy-rojas-frants/