Aporte c++

Iniciado por Stakewinner00, 31 Agosto 2012, 10:31 AM

0 Miembros y 3 Visitantes están viendo este tema.

Stakewinner00

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 (cpp) [Seleccionar]

//Created by STAKEWINNER00

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

//FUNCION QUE GENERA UN NUMERO ALEATORIO
int ran(){
   srand((int)time(NULL));
   int num;
           num = (rand()%50)+1;
}
int num=ran();

//ENCRIPTACION CON EL SISTEMA PROPIO
int CR1 (char mens) {
   char letra;
      cout << endl << "Mensaje cifrado::";
letra = 'D' + num;
letra = letra + 'D';
cout << letra;
while (mens!=';') {
   letra =  mens + num;
   letra = letra + 'D';
   cin >> mens;
   cout << letra;
      if ((mens<31)&&(mens>0)||(mens>127)) {
   cout << ":::";
  num=ran();
   }

}
cout << endl << endl;
system("PAUSE >> NUL");
}

int RCR1 (char mens) {
   char letra;
   char nu;
   int i=0;
      cout << endl << "Mensaje cifrado::";
      letra=mens - 'D';
 while (nu!='D') {
     i++;
     cout << 50-i;
     system("CLS");
 nu = letra - i;
 }
     cin >> mens;
while (mens!=';') {
       letra = mens - 'D';
   letra =  letra - i;
   cin >> mens;
   cout << letra;
num=ran();}
cout << endl << endl;
system("PAUSE >> NUL");
}
//ENCRIPTACION CON EL SISTEMA PROPIO CON EL SEGUNDO METODO
int CR1M2 (char mens) {
   char letra;
       char num2;
       num2=1+rand()%(200-1);
      cout << endl << "Mensaje cifrado::";
while (mens!=';') {
   letra = 'D' + num;
   letra = letra + 'D';
   cout << letra;

   letra =  mens + num;
   letra = letra + 'D';
   letra = letra - num2;

   cin >> mens;
   cout << letra << num2;
num=1+rand()%(50-1);
}
cout << endl << endl;
system("PAUSE >> NUL");
}

int RCR1M2 (char mens) {
   char letra;
   char nu;
   int i=0;
      cout << endl << "Mensaje descifrado::";

while (mens!=';') {
   i=0;
     letra=mens - 'D';
     while (nu!='D') {
   i++;
      nu = letra - i;
 }
 nu =NULL;
   cin >> mens;
   letra = mens - 'D';
   letra =  letra - i;
   cin >> mens;
   letra = letra + mens;
   cin >> mens;
   cout << letra;
}
cout << endl <<endl;
system("PAUSE >> NUL");
}

//ENCRIPTACION Y DESNECRIPTACION EN CESAR
void desencript (char mens, int n) {
       char letra;
   cout << endl << endl << "Mensaje descifrado::";
while (mens!=';') {
letra=mens-n;
cin >> mens;
cout << letra;
}
cout << endl << endl;
system("PAUSE >> NUL");
}
int encript (char mens, int n) {
   char letra;
      cout << endl << "Mensaje cifrado::";
while (mens!=';') {
letra=mens+n;
cin >> mens;

cout << letra;
}
cout << endl << endl;
system("PAUSE >> NUL");
}

//MAIN
int main()
{
int opcion;
char mens;
int n;
a:
system("CLS");
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<<">>";
cin >> opcion;
if ((opcion==1)||(opcion==2)) {
cout << endl<<"NUMERO DE SALTOS-->";
cin >> n;
}
switch(opcion) {
case 1:cout << "MENSAJE-->";cin>>mens;encript(mens,n);goto a;
case 2:cout << "MENSAJE-->";cin>>mens;desencript(mens,n);goto a;
case 3:cout << "MENSAJE-->";cin>>mens;CR1(mens);goto a;
case 4:cout << "MENSAJE-->";cin>>mens;RCR1(mens);goto a;
case 5:cout << "MENSAJE-->";cin>>mens;CR1M2(mens);goto a;
case 6:cout << "MENSAJE-->";cin>>mens;RCR1M2(mens);goto a;
}

}

xiruko

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!

farresito

Cita de: xiruko 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!
Lo mismo me pregunto yo. Un cifrador que no puede descifrar? Vaya...

Stakewinner00

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

letra = 'D' + num;    letra = letra + 'D';    cout << letra;

farresito

Cita de: Stakewinner00 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

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/

xiruko

Citarantes 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!

avesudra

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!
Regístrate en

Stakewinner00

Cita de: avesudra 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!

Ya lo mirare

Gracias

Stakewinner00

Cita de: farresito en  2 Septiembre 2012, 00:23 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