elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [c++] Cifrar y descifrar archivos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [c++] Cifrar y descifrar archivos  (Leído 18,025 veces)
Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
[c++] Cifrar y descifrar archivos
« en: 22 Noviembre 2010, 00:53 am »

Buenas, les dejo un codigo que hice en c++.
Es bastante simple pero a alguno que esta empezando le puede servir.
Sirve para ponerle contraseñas a los archivos, suma el codigo ascii del archivo con el de la clave. Y para descifrarlo los resta.

http://www.mediafire.com/?di5q9018ti4t0eb


Código
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<string.h>
  5. using namespace std;
  6.  
  7. void limpiarPantalla()
  8. {
  9. system("clear"); //en windows seria system("cls");
  10. }
  11.  
  12. //se define una clase
  13. class cifrado
  14. {
  15. private:
  16. char *cadena; //cadena en la que se carga el archivo
  17. long tam; //tamaño del archivo
  18. public:
  19. ~cifrado(); //destructor
  20. void leer_de_disco( const char* );
  21. void cifrar( const char* );
  22. void descifrar( const char* );
  23. void grabar_en_disco( const char* );
  24. };
  25.  
  26. // leer_de_disco:
  27. // abre la direccion del archivo que es pasado por parametro
  28. // y guarda su contenido en la cadena
  29. void cifrado::leer_de_disco(const char* nombre_archivo)
  30. {
  31. FILE *ar1;
  32.  
  33. //abre el archivo
  34. ar1 = fopen( nombre_archivo,"rb" );
  35. if( !ar1 )exit(1); //si no puede sale
  36.  
  37. fseek( ar1,0,2 ); //se posiciona al final
  38. tam = ftell( ar1 ); //guarda el numero
  39. fseek( ar1,0,0 ); //se posiciona al principio
  40.  
  41. //crea un vector del tamaño conseguido
  42. cadena = new char[tam];
  43.  
  44. //intenta leer los datos, si no puede sale
  45. if( !fread(cadena,tam,1,ar1) )exit(1);
  46.  
  47. fclose( ar1 ); //cierra el archivo
  48. }
  49.  
  50. // cifrar:
  51. // suma el codigo ASCII de la cadena con una
  52. // clave que es pasada por parametro
  53. void cifrado::cifrar(const char *clave)
  54. {
  55. int x=0,y=0; //indices de las cadenas
  56.  
  57. //mientras no sea el fin de la cadena
  58. while( cadena[x]!=0 )
  59. {
  60. cadena[x]+=clave[y]; //suma el codigo ASCII
  61. x++; //pasa a la siguiente posicion
  62.  
  63. if( clave[y+1]==0 ) //si se llega al final de la cadena
  64. y=0; //comienza de nuevo
  65. else //si no
  66. y++; //sigue incrementando el indice
  67. }
  68. }
  69.  
  70. // descifrar:
  71. // resta al codigo ASCII de la cadena
  72. // la clave que es pasada por parametro
  73. void cifrado::descifrar(const char *clave)
  74. {
  75. int x=0,y=0; //indices de las cadenas
  76.  
  77. //mientras no sea el fin de la cadena
  78. while( cadena[x]!=0 )
  79. {
  80. cadena[x]-=clave[y]; //resta el codigo ASCII
  81. x++; //pasa a la siguiente posicion
  82.  
  83. if( clave[y+1]==0 ) //si se llega al final de la cadena
  84. y=0; //comienza de nuevo
  85. else //si no
  86. y++; //sigue incrementando el indice
  87. }
  88. }
  89.  
  90. // grabar_en_disco
  91. // abre la direccion que es pasada por parametro
  92. // y guarda el contenio de la cadena
  93. void cifrado::grabar_en_disco( const char *nombre_archivo )
  94. {
  95. FILE *ar1;
  96.  
  97. //abre el archivo
  98. ar1 = fopen( nombre_archivo,"rb+" );
  99. if( !ar1 )exit(1); //si no puede sale
  100.  
  101. //intenta escribir los datos, si no puede sale
  102. if( !fwrite(cadena,tam,1,ar1) )exit(1);
  103.  
  104. fclose( ar1 ); //cierra el archivo
  105. }
  106.  
  107. cifrado::~cifrado()
  108. {
  109. delete[] cadena; //libera la memoria
  110. }
  111.  
  112. int main()
  113. {
  114. cifrado archivo; //objeto para manejar el proceso
  115.  
  116. int opcion; //opcion del menu
  117. char nombre_archivo[30]; //direccion del archivo
  118. char clave_archivo[30]; //clave
  119.  
  120. do
  121. {
  122. limpiarPantalla(); //limpia pantalla y muestra menu
  123. cout << "1. Seleccionar Archivo" << endl;
  124. cout << "2. Cifrar" << endl;
  125. cout << "3. Descifrar" << endl;
  126. cout << "4. Cerrar programa" << endl;
  127. cout << "Opcion: ";
  128.  
  129. cin >> opcion; //pide el ingreso de una opcion
  130.  
  131. clave_archivo[0] = 0; //pone en cero la clave
  132.  
  133. switch( opcion )
  134. {
  135. case 1:
  136. cout << "Nombre del archivo: ";
  137. cin.ignore();
  138. //se ingresa la direccion del archivo
  139. cin.getline( nombre_archivo,30 );
  140.  
  141. //si la cadena esta vacia no hace nada
  142. if( nombre_archivo[0]==0 )break;
  143. archivo.leer_de_disco( nombre_archivo );
  144. break;
  145.  
  146. case 2:
  147. //si la cadena esta vacia no hace nada
  148. if( nombre_archivo[0]==0 )break;
  149. cout << "Ingrese la clave: ";
  150. cin.ignore();
  151. //se ingresa la cable para cifrar
  152. cin.getline( clave_archivo,30 );
  153.  
  154. //si la clave esta vacia no hace nada
  155. if( clave_archivo[0]==0 )break;
  156. archivo.cifrar( clave_archivo ); //cifra
  157. archivo.grabar_en_disco( nombre_archivo ); //guarda
  158. break;
  159.  
  160. case 3:
  161. //si la cadena esta vacia no hace nada
  162. if( nombre_archivo[0]==0 )break;
  163. cout << "Ingrese la clave: ";
  164. cin.ignore();
  165. //se ingresa la clave para descifrar
  166. cin.getline( clave_archivo,30 );
  167.  
  168. //si la clave esta vacia no hace nada
  169. if( clave_archivo[0]==0 )break;
  170. archivo.descifrar( clave_archivo ); //descifra
  171. archivo.grabar_en_disco( nombre_archivo ); //guarda
  172. break;
  173.  
  174. case 4:
  175. return 0; //sale del programa
  176. break;
  177. }
  178. }while(1);
  179. }
  180.  



« Última modificación: 22 Noviembre 2010, 01:16 am por qily » En línea

josemario1606

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [c++] Cifrar y descifrar archivos
« Respuesta #1 en: 5 Diciembre 2016, 15:33 pm »

Buenas,

Sé que este tema está más que anciano, pero quería saber cómo utiliza el programa, ya que a la hora de ingresar el nombre del archivo, simplemente se cierra. Si por casualidad aún tienes el programa, ¿crees que podrías resubirlo o explicarme cómo utilizarlo?


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [c++] Cifrar y descifrar archivos
« Respuesta #2 en: 5 Diciembre 2016, 17:26 pm »

esto no es un programa profesional de cifrado ni mucho menos, es un experimentos simple de un usuario... debes pasar al ruta absoluta del archivo
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C#] cifrar/descifrar en AES
.NET (C#, VB.NET, ASP)
Mace Windu 4 18,700 Último mensaje 20 Diciembre 2010, 04:56 am
por [D4N93R]
cifrar/descifrar archivos
.NET (C#, VB.NET, ASP)
rob1104 3 7,203 Último mensaje 1 Julio 2012, 19:41 pm
por Keyen Night
[aporte]c++ cifrar/descifrar archivos comando
Programación C/C++
daryo 4 4,128 Último mensaje 12 Junio 2013, 17:57 pm
por daryo
Cómo cifrar los archivos que almacenamos en nuestra computadora
Noticias
Mister12 0 1,845 Último mensaje 22 Agosto 2013, 21:41 pm
por Mister12
Descifrar/cifrar archivos crypt5 de Whatsapp
Programación General
dseoane 3 11,723 Último mensaje 31 Marzo 2014, 11:32 am
por segam
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines