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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


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


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Aporte c++
« en: 31 Agosto 2012, 10:31 am »

Estoy creando una encriptador  en c++ y quisiera saber su opinion haber k les parece y como puedo mejorarlo.

Los numeros con los que se cifra son aleatorios para evitar que alguien tenga una pequeña chuleta con todo el abecedario y lo k coresponde.

Nose demasiado de criptografia, por lo que puede que hayan bastantes fallos logicos.

Bueno aqui esta el codigo.


Código
  1. //Created by STAKEWINNER00
  2.  
  3. #include <iostream>
  4. #include <cstdlib>
  5. #include <ctime>
  6.  
  7. using namespace std;
  8.  
  9. //FUNCION QUE GENERA UN NUMERO ALEATORIO
  10. int ran(){
  11.    srand((int)time(NULL));
  12.    int num;
  13.            num = (rand()%50)+1;
  14. }
  15. int num=ran();
  16.  
  17. //ENCRIPTACION CON EL SISTEMA PROPIO
  18. int CR1 (char mens) {
  19.    char letra;
  20.       cout << endl << "Mensaje cifrado::";
  21. letra = 'D' + num;
  22. letra = letra + 'D';
  23. cout << letra;
  24. while (mens!=';') {
  25.    letra =  mens + num;
  26.    letra = letra + 'D';
  27.    cin >> mens;
  28.    cout << letra;
  29.       if ((mens<31)&&(mens>0)||(mens>127)) {
  30.    cout << ":::";
  31.   num=ran();
  32.    }
  33.  
  34. }
  35. cout << endl << endl;
  36. system("PAUSE >> NUL");
  37. }
  38.  
  39. int RCR1 (char mens) {
  40.    char letra;
  41.    char nu;
  42.    int i=0;
  43.       cout << endl << "Mensaje cifrado::";
  44.       letra=mens - 'D';
  45.  while (nu!='D') {
  46.      i++;
  47.      cout << 50-i;
  48.      system("CLS");
  49.  nu = letra - i;
  50.  }
  51.      cin >> mens;
  52. while (mens!=';') {
  53.        letra = mens - 'D';
  54.    letra =  letra - i;
  55.    cin >> mens;
  56.    cout << letra;
  57. num=ran();}
  58. cout << endl << endl;
  59. system("PAUSE >> NUL");
  60. }
  61. //ENCRIPTACION CON EL SISTEMA PROPIO CON EL SEGUNDO METODO
  62. int CR1M2 (char mens) {
  63.    char letra;
  64.        char num2;
  65.        num2=1+rand()%(200-1);
  66.       cout << endl << "Mensaje cifrado::";
  67. while (mens!=';') {
  68.    letra = 'D' + num;
  69.    letra = letra + 'D';
  70.    cout << letra;
  71.  
  72.    letra =  mens + num;
  73.    letra = letra + 'D';
  74.    letra = letra - num2;
  75.  
  76.    cin >> mens;
  77.    cout << letra << num2;
  78. num=1+rand()%(50-1);
  79. }
  80. cout << endl << endl;
  81. system("PAUSE >> NUL");
  82. }
  83.  
  84. int RCR1M2 (char mens) {
  85.    char letra;
  86.    char nu;
  87.    int i=0;
  88.       cout << endl << "Mensaje descifrado::";
  89.  
  90. while (mens!=';') {
  91.    i=0;
  92.      letra=mens - 'D';
  93.      while (nu!='D') {
  94.    i++;
  95.       nu = letra - i;
  96.  }
  97.  nu =NULL;
  98.    cin >> mens;
  99.    letra = mens - 'D';
  100.    letra =  letra - i;
  101.    cin >> mens;
  102.    letra = letra + mens;
  103.    cin >> mens;
  104.    cout << letra;
  105. }
  106. cout << endl <<endl;
  107. system("PAUSE >> NUL");
  108. }
  109.  
  110. //ENCRIPTACION Y DESNECRIPTACION EN CESAR
  111. void desencript (char mens, int n) {
  112.        char letra;
  113.    cout << endl << endl << "Mensaje descifrado::";
  114. while (mens!=';') {
  115. letra=mens-n;
  116. cin >> mens;
  117. cout << letra;
  118. }
  119. cout << endl << endl;
  120. system("PAUSE >> NUL");
  121. }
  122. int encript (char mens, int n) {
  123.    char letra;
  124.       cout << endl << "Mensaje cifrado::";
  125. while (mens!=';') {
  126. letra=mens+n;
  127. cin >> mens;
  128.  
  129. cout << letra;
  130. }
  131. cout << endl << endl;
  132. system("PAUSE >> NUL");
  133. }
  134.  
  135. //MAIN
  136. int main()
  137. {
  138. int opcion;
  139. char mens;
  140. int n;
  141. a:
  142. system("CLS");
  143. cout << "1.cifrar (CESAR)" << endl << "2.descifrar (CESAR)" << endl << "3.cifrar (CR1)" << endl << "4.descifrar  (CR1)" <<endl << "5.cifrar (CR1M2)" << endl << "6.descifrar (CR1M2)"<< endl<<endl<<">>";
  144. cin >> opcion;
  145. if ((opcion==1)||(opcion==2)) {
  146. cout << endl<<"NUMERO DE SALTOS-->";
  147. cin >> n;
  148. }
  149. switch(opcion) {
  150. case 1:cout << "MENSAJE-->";cin>>mens;encript(mens,n);goto a;
  151. case 2:cout << "MENSAJE-->";cin>>mens;desencript(mens,n);goto a;
  152. case 3:cout << "MENSAJE-->";cin>>mens;CR1(mens);goto a;
  153. case 4:cout << "MENSAJE-->";cin>>mens;RCR1(mens);goto a;
  154. case 5:cout << "MENSAJE-->";cin>>mens;CR1M2(mens);goto a;
  155. case 6:cout << "MENSAJE-->";cin>>mens;RCR1M2(mens);goto a;
  156. }
  157.  
  158. }
  159.  


« Última modificación: 31 Agosto 2012, 18:08 pm por Stakewinner00 » En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Aporte c++
« Respuesta #1 en: 1 Septiembre 2012, 23:31 pm »

una pregunta que no tiene que ver con el codigo en si... yo no se casi nada de criptografia, pero si cifras algo con numeros aleatorios, como lo descifras luego? no lo entiendo ya que, por ejemplo, 1 mismo texto dara distintas formas cuando este cifrado, pero como haces para que todas acaben en 1 misma manera (texto original) al descifrarlo?

gracias por la ayuda, un saludo!


En línea

farresito


Desconectado Desconectado

Mensajes: 302



Ver Perfil
Re: Aporte c++
« Respuesta #2 en: 1 Septiembre 2012, 23:39 pm »

una pregunta que no tiene que ver con el codigo en si... yo no se casi nada de criptografia, pero si cifras algo con numeros aleatorios, como lo descifras luego? no lo entiendo ya que, por ejemplo, 1 mismo texto dara distintas formas cuando este cifrado, pero como haces para que todas acaben en 1 misma manera (texto original) al descifrarlo?

gracias por la ayuda, un saludo!
Lo mismo me pregunto yo. Un cifrador que no puede descifrar? Vaya...
En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Aporte c++
« Respuesta #3 en: 2 Septiembre 2012, 00:02 am »

SI se puede revertir el primer caracter es la letra D cifrada con el numero aleatorio solo hay 50 posibilidades por lo k prueba los 50 numeros y cuando uno da D luego con el mismo numero descifra los otros caracteres asta conseguir el hola por ejemplo, lo e estadi probando y no da muchos problemas.

Si quieren pueden probarlo

aki esta esa parte

antes de criticar podeis mirar el code pero ya esta bien k alguien critique mi programa

Código:
letra = 'D' + num;    letra = letra + 'D';    cout << letra;
En línea

farresito


Desconectado Desconectado

Mensajes: 302



Ver Perfil
Re: Aporte c++
« Respuesta #4 en: 2 Septiembre 2012, 00:23 am »

SI se puede revertir el primer caracter es la letra D cifrada con el numero aleatorio solo hay 50 posibilidades por lo k prueba los 50 numeros y cuando uno da D luego con el mismo numero descifra los otros caracteres asta conseguir el hola por ejemplo, lo e estadi probando y no da muchos problemas.

Si quieren pueden probarlo

aki esta esa parte

antes de criticar podeis mirar el code pero ya esta bien k alguien critique mi programa

Código:
letra = 'D' + num;    letra = letra + 'D';    cout << letra;
No iba con ofensa; todo lo contrario. Lo que pasa es que yo no estoy para leerme detalladamente todos los códigos, como comprenderás. Leo tu explicación y esta es la conclusión que saco. Por cierto, para el bien de todo el mundo, incluido el tuyo, formatea el código (pone los tabs y alinéalo bien). Prueba este link. Si no recuerdo mal, lo he usado más de una vez y me ha funcionado:

http://www.prettyprinter.de/
En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Aporte c++
« Respuesta #5 en: 2 Septiembre 2012, 04:30 am »

Citar
antes de criticar podeis mirar el code pero ya esta bien k alguien critique mi programa

 :o

como dice farresito yo tampoco lo decia para ofender ni nada, y como dije en mi post no se casi nada de criptografia y por eso preguntaba...

en fin, me apunto la manera de hacerlo y la probare.

un saludo!
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Aporte c++
« Respuesta #6 en: 2 Septiembre 2012, 05:12 am »

Está bastante bien pero piensa que no cumple con su prometido , es decir cualquier persona que tenga tu clase puede descifrar un mensaje , en el subforo de criptografía hay un taller y un manual de APOKLIPTICO bastante buenos por si quieres echarle una ojeada, eso sí son complicados. Yo hace no mucho hice un encriptador pero que se basaba en criptografía simetrica y ademas el algoritmo me lo habia inventado yo( era malillo) , consistia en cifrar el texto plano con la contraseña que quieras y al que se lo mandes lo descifra con esa contraseña.Pero bueno a pesar de la critica esa, has tenido una muy buena idea y además has implementado el cifrado cesar o sea que muy bien!

¡Un saludo!
En línea

Regístrate en
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Aporte c++
« Respuesta #7 en: 2 Septiembre 2012, 08:32 am »

Está bastante bien pero piensa que no cumple con su prometido , es decir cualquier persona que tenga tu clase puede descifrar un mensaje , en el subforo de criptografía hay un taller y un manual de APOKLIPTICO bastante buenos por si quieres echarle una ojeada, eso sí son complicados. Yo hace no mucho hice un encriptador pero que se basaba en criptografía simetrica y ademas el algoritmo me lo habia inventado yo( era malillo) , consistia en cifrar el texto plano con la contraseña que quieras y al que se lo mandes lo descifra con esa contraseña.Pero bueno a pesar de la critica esa, has tenido una muy buena idea y además has implementado el cifrado cesar o sea que muy bien!

¡Un saludo!

Ya lo mirare

Gracias
En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Aporte c++
« Respuesta #8 en: 2 Septiembre 2012, 08:33 am »

No iba con ofensa; todo lo contrario. Lo que pasa es que yo no estoy para leerme detalladamente todos los códigos, como comprenderás. Leo tu explicación y esta es la conclusión que saco. Por cierto, para el bien de todo el mundo, incluido el tuyo, formatea el código (pone los tabs y alinéalo bien). Prueba este link. Si no recuerdo mal, lo he usado más de una vez y me ha funcionado:

http://www.prettyprinter.de/

Ok voy a probarlo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pequeño aporte(proxy),pero aporte al fin.:D
Programación Visual Basic
Tengu 0 2,605 Último mensaje 22 Julio 2007, 17:33 pm
por Tengu
Aporte
Ingeniería Inversa
R6ID 0 2,369 Último mensaje 28 Febrero 2008, 11:35 am
por R6ID
Aporte-Duda DownNET
.NET (C#, VB.NET, ASP)
d1dac 3 2,705 Último mensaje 7 Noviembre 2012, 16:06 pm
por Keyen Night
[Aporte] Aporte
Programación C/C++
Stakewinner00 3 2,787 Último mensaje 14 Noviembre 2012, 16:39 pm
por Stakewinner00
Fondo Blur GDI+ [Aporte]
.NET (C#, VB.NET, ASP)
Keyen Night 0 2,198 Último mensaje 18 Noviembre 2012, 03:10 am
por Keyen Night
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines