Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Stakewinner00 en 24 Enero 2013, 17:14 pm



Título: Programa para cifrar mensajes de forma paseudo-aleatoria.
Publicado por: Stakewinner00 en 24 Enero 2013, 17:14 pm
Cuelgo un programa de cifrado que cree que desde el punto de vista matemático seguro que tiene muchos fallos pero lo cuelgo para a quien le sirva y de paso inspirar a otras personas.

Aki el código fuente:

http://www.mediafire.com/?yga1w6xladwoins (http://www.mediafire.com/?yga1w6xladwoins)

o

http://www.mediafire.com/view/?yga1w6xladwoins (http://www.mediafire.com/view/?yga1w6xladwoins)

Le quite unos system("CLS") que tenia para que alguien lo pruebe en linux si quiere (yo no lo he probado), cambie los char[] a char normales para cifrar letra por letra y así poder cifrar miles de líneas pero cuando son muchas lineas no lo descifra bien. Ademas antes tenias que introducir el texto por consola ahora va por nombre de archivos.


Como dije lo hice como un juego y cuando tenga tiempo lo iré mejorando.

También quería agradecer a los que respondieron a http://foro.elhacker.net/programacion_cc/ayuda_delimitar_fin_de_archivo-t380396.0.html ya que sin ellos no hubiera podido avanzar.

Bueno espero que les guste y cada uno haga su versión mejorada.

PD:Otros fallos son:
-el texto de salida es mayor que el de entrada
-No puede cifrar mensajes sin caracteres leibles dicho de otra forma no puedes cifrar imágenes o .exe

PPD:Ahora me fije y quizás el tema debería ir en el foro de c++ ya que esta echo en c++ y tiene más de programación que de seguridad.


Título: Re: Programa para cifrar mensajes de forma paseudo-aleatoria.
Publicado por: satu en 25 Enero 2013, 12:49 pm
Buenas!!

He echado un ojo por encima y he visto algunas cosas a corregir:
-La función ran debe devolver un entero (return num)
-El main se puede reducir muuuuuuuuuuuuuuuuuuuuuuuucho. Utiliza las funciones que has creado, no repitas tanto el código
-Cuando cifras y descifras abres y cierras los ficheros varias veces. Eso consume muchos recursos y es totalmente innecesario
Código
  1. is.seekg(0, ios::beg);
  2. is.close();
  3. double long size2=0;
  4. cout << endl << endl<< "PUEDE TARDAR SEGUNDOS DEPENDIENDO DE LA LONGITUD DEL ARCHIVO" << endl << endl;
  5. is.open (str);
  6.  
  7. ...........
  8.  
  9. mens='\0';
  10. is.close();
  11. is.open (str);
  12. int v=0;

No sé si habrá más cosas, he mirado solo por encima

Saludos


Título: Re: Programa para cifrar mensajes de forma paseudo-aleatoria.
Publicado por: Stakewinner00 en 25 Enero 2013, 14:58 pm
Gracias por responder el main ese tan largo lo puse para probar, hoy si tengo tiempo lo mejorare.

Cuando pueda lo acabo de arreglar y lo re subo.

Gracias por todo.

PD:SI te gusta puedes modificarlo y colgar tu mejora junto con tu nombre.

EDITO:Ya hice el código corto. Ahora voy a mirar lo de los archivos que dijiste.


Título: Re: Programa para cifrar mensajes de forma paseudo-aleatoria.
Publicado por: 0xDani en 25 Enero 2013, 17:25 pm
No es por ofender, pero casi no puedo leer el codigo de desorganizado que esta. No vendria mal usar una buena indentacion, poner unos cuantos saltos de linea entre partes del codigo y comentarlo.

Ah, y esto:
Código
  1. string unString = "";

Para que?

Bueno repito que lo digo solo con animo constructivo, pero quiza si hicieses el codigo mas claro incluso tu mismo lo leerias mejor.

Saludos.


Título: Re: Programa para cifrar mensajes de forma paseudo-aleatoria.
Publicado por: Stakewinner00 en 25 Enero 2013, 17:57 pm
EDITO: Ya arregle el código y lo hice presentable con algunos comentarios.
Cuando tenga tiempo pondre sistema con password ya que ahora tiene seguriad 0.

OK, jaja ahora lo pongo un poco más presentable.

Es k aun no cave y tengo partes de código. de pruebas que hize



Busque esto en el código y no esta.
Código:
string unString = "";

Pase el codigo por http://www.prettyprinter.de/module.php?name=PrettyPrinter
y si, era un poco ilegible, me descuide quizás de lo más importante. Ahora lo comento y lo optimizo ya que hay partes de código que ya son inutiles


Título: Re: Programa para cifrar mensajes de forma paseudo-aleatoria.
Publicado por: 0xDani en 25 Enero 2013, 19:42 pm
Busque esto en el código y no esta.
Código:
string unString = "";

La variable no se llama unString, era un ejemplo, en tu codigo esa variable es mens2.

Bueno voy a verlo otra vez a ver que tal.

Saludos.

PD: Ya que estas en C++ estaria bien que una vez que tengas eso mejorado lo metieras en una clase o una template.


Título: Re: Programa para cifrar mensajes de forma paseudo-aleatoria.
Publicado por: Stakewinner00 en 25 Enero 2013, 20:21 pm
ok, ya lo mirare, lo del mens2 sirve para guardar las letras y cifrar-las y descifrarlas.


Título: Re: Programa para cifrar mensajes de forma paseudo-aleatoria.
Publicado por: avesudra en 25 Enero 2013, 20:48 pm
ok, ya lo mirare, lo del mens2 sirve para guardar las letras y cifrar-las y descifrarlas.
Stakewinner00 existe una especie de estándar (más que un estándar son buenas prácticas), que dicen por ejemplo que hay que utilizar nombres de variables descriptivos. Queda más legible esto(aunque 0xDani lo decía por las comillas dobles yo me refiero a los nombres descriptivos):
Código
  1. string segundoMensaje = " ";
  2. string mensajeDos = " ";
  3. string mensaje2 = " ";
Que:
Código
  1. string mens2 = " ";
Aunque eso es lo de menos, a la larga te servirá mucho si utilizas muchas variables en un programa ya que si pones mens1 mens2 mens3. Al final no te acuerdas ni de lo que era cada uno. En este caso me parece que mens2, es un buffer donde se almacena el texto a cifrar así que no estaría mal este nombre:
Código
  1. string textoAEncriptar = " ";

Otro tema es que usas una función obsoleta, yo también la usaba hace tiempo hasta que me lo dijeron aquí. La función atoi está obsoleta, ahora se usa strtol:
Código
  1. long int strtol ( const char * str, char ** endptr, int base );
Referencia --> http://www.cplusplus.com/reference/cstdlib/strtol/
Otra cosa que remarcar, no es nada del otro mundo solo que se te ha pasado (ya que he visto que en time si has puesto ctime)es que estás agregando un archivo de cabecera de C en C++ en concreto:
Código
  1. #include <stdio.h>
Que deberías cambiar por:
Código
  1. #include <cstdio>
Más cosas.Te faltan dos librerías en los comentarios indico para que funciones son:
Código
  1. #include <cstdlib> //Para srand() y rand()
  2. #include <cstring> //Para strcpy()

PD: está muy bueno lo he probado con un archivo de código fuente .c y vá bien, ¡gran trabajo!


Título: Re: Programa para cifrar mensajes de forma paseudo-aleatoria.
Publicado por: Stakewinner00 en 25 Enero 2013, 21:38 pm
Ok, gracias por todo.

No sabia lo de atoi().

Ahora mismo no tengo tiempo pero la siguiente semana arreglare todo lo que me has dicho, gracias por dedicar tu tiempo a mirar mi programa. Poco a poco iré mejorando el programa.