he logrado crear un sencillo sistema de cifrado.
Bueno... la cifrado es algo loca, pero la pueden modificar a su gusto.
Me gustaría que me dieran consejos de como podría mejor este código.
Que cosas hize de más, o que le falta.
¿Estoy usando mucho código innecesario?
PD: Solo cifra palabras en minusculas, y solo acepta espacios como separador.
Aquí les dejo el codigo:
Código
#include <iostream> #include <windows.h> #include <vector> #include <string> #include <sstream> using namespace std; vector<string> AddNumbers(vector<string> vector){ vector.push_back("cml29"); vector.push_back("mpdo1"); vector.push_back("cp3p"); vector.push_back("maT4"); vector.push_back("88gk"); vector.push_back("29f"); vector.push_back("9fff"); vector.push_back("fj239"); vector.push_back("fj33f"); vector.push_back("f888"); vector.push_back("45fc"); vector.push_back("d892"); vector.push_back("cronq"); vector.push_back("you"); vector.push_back("llnever"); vector.push_back("know"); vector.push_back("this"); vector.push_back("encr"); vector.push_back("ipta"); vector.push_back("tion"); vector.push_back("lol"); vector.push_back("rf8"); vector.push_back("l28"); vector.push_back("66"); vector.push_back("d6"); vector.push_back("e79d"); vector.push_back("49jf"); return vector; } vector<string> AddLetters(vector<string> vector){ vector.push_back("a"); vector.push_back("b"); vector.push_back("c"); vector.push_back("d"); vector.push_back("e"); vector.push_back("f"); vector.push_back("g"); vector.push_back("h"); vector.push_back("i"); vector.push_back("j"); vector.push_back("k"); vector.push_back("l"); vector.push_back("m"); vector.push_back("n"); vector.push_back("o"); vector.push_back("p"); vector.push_back("q"); vector.push_back("r"); vector.push_back("s"); vector.push_back("t"); vector.push_back("u"); vector.push_back("v"); vector.push_back("w"); vector.push_back("x"); vector.push_back("y"); vector.push_back("z"); vector.push_back(" "); return vector; } class CODSYS{ public: vector<string> abc; vector<string> nums; CODSYS(){ abc = AddLetters(abc); nums = AddNumbers(nums); } }; vector<string> PartirString(string a){ vector<string> vector; string word; stringstream stream(a); while( getline(stream, word, 'x')) vector.push_back(word); return vector; } string descifrar(string a){ CODSYS *dat = new CODSYS; vector<string> numeros; // vector<string>::iterator it; string numeroactual; string descifrado; numeros = PartirString(a); // Se eliminan las "x" y se guarda cada número como un elemento del vector. for(unsigned int i = 0; i < numeros.size(); i++){ numeroactual = numeros[i]; for(unsigned int z = 0; z < dat->nums.size(); z++){ if(numeroactual == dat->nums[z]){ descifrado += dat->abc[z]; break; } } } delete dat; return descifrado; } string cifrar(string a){ CODSYS *dat = new CODSYS; string letraactual; string cifrado; for(unsigned int i = 0; i < a.length(); i++){ letraactual = a[i]; for(unsigned int z = 0; z < dat->abc.size(); z++){ if(letraactual == dat->abc[z]){ cifrado += dat->nums[z]; cifrado += "x"; } } } delete dat; return cifrado; } void EncMain(){ system("cls"); string cadena; cout << "Ingresa una Cadena para encriptarla:\n"; getline(cin, cadena); cout << "\n\n= " << cifrar(cadena) << "\n\n" ; system("PAUSE"); system("CLS"); } void DesencMain(){ system("cls"); string cadena; cout << "Ingresa una Cadena para desencriptarla:\n"; getline(cin, cadena); cout << "\n\n= " << descifrar(cadena) << "\n\n"; system("PAUSE"); system("CLS"); } int main(int argc, char *argv[]){ while(true){ string dec; r: cout << "==> Encriptador por mastersuv v0.1 <==\n\n"; cout << "---- Selecciona una opcion: ----\n"; cout << "|| ||\n"; cout << "|| 1. cifrar una Cadena ||\n"; cout << "|| 2. descifrar una Cadena ||\n"; cout << "|| ||\n"; cout << "--------------------------------\n\n> "; getline(cin, dec); for(unsigned int i = 0; i < dec.length(); i++){ if(!isdigit(dec[i])){ MessageBoxA(NULL, "Ingrese solo numeros!", "Error!", MB_OK); system("CLS"); goto r; break; } else if((dec > "2" || dec < "1")){ MessageBoxA(NULL, "Opción inválida", "Error!", MB_OK); system("CLS"); goto r; break; } else{ continue; } } if(dec == "1"){ EncMain(); } else if(dec == "2"){ DesencMain(); } } return 0; }