Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Cifrado de texto.
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <sstream>
- #include <vector>
- using namespace std;
- string texto_a_cifrar;
- int longitud_de_texto_a_cifrar;
- string unir_numeros_asci = "";
- string unir_numeros_binarios = "";
- string texto_original;
- unsigned int rep = 0;
- unsigned int longitud_unir_numeros_binarios;
- using MyVector = vector<string>;
- MyVector myVector;
- string obtenerDeVector = "";
- string binarioEn32 = "";
- string binarioConvertidoABase64 = "";
- void MostrarCifradoEnPantalla();
- void CrearTxt();
- void Capa1();//Substitucion plana.
- void Capa2();//Conversion a ascii y binario.
- void binarioAbase64();
- string guardarBinario6dos = {""};
- int main()
- {
- cout << "Si el archivo de texto generado no se corresponde con el texto introducido cierre el archivo de texto y espere unos segundos." <<endl<< endl;
- cout << "Introduce el texto a cifrar \n";
- getline(cin,texto_a_cifrar);
- longitud_de_texto_a_cifrar = texto_a_cifrar.length();
- texto_original = texto_a_cifrar;
- Capa1(); //Substitucion diccionario.
- Capa2(); //ASCII y Binario.
- MostrarCifradoEnPantalla(); //Datos en pantalla.
- string guardarBinario6 = "";
- binarioAbase64(); //Binario a base64 no std.
- cout << "BASE64: " << binarioConvertidoABase64;
- CrearTxt(); //Escribir datos en texto.
- cin >> texto_a_cifrar; //system pause.
- return 0;
- }
- void Capa1()
- {
- /* Cifrado por substitucion */
- int i;
- for (i=0; i<longitud_de_texto_a_cifrar; i++)
- {
- switch (texto_a_cifrar[i])
- {
- case 'A':
- texto_a_cifrar[i] = 'a';
- break;
- case 'B':
- texto_a_cifrar[i] = 'b';
- break;
- case 'C':
- texto_a_cifrar[i] = 'c';
- break;
- case 'D':
- texto_a_cifrar[i] = 'd';
- break;
- case 'E':
- texto_a_cifrar[i] = 'e';
- break;
- case 'F':
- texto_a_cifrar[i] = 'f';
- break;
- case 'G':
- texto_a_cifrar[i] = 'g';
- break;
- case 'H':
- texto_a_cifrar[i] = 'h';
- break;
- case 'I':
- texto_a_cifrar[i] = 'i';
- break;
- case 'J':
- texto_a_cifrar[i] = 'j';
- break;
- case 'K':
- texto_a_cifrar[i] = 'k';
- break;
- case 'L':
- texto_a_cifrar[i] = 'l';
- break;
- case 'M':
- texto_a_cifrar[i] = 'm';
- break;
- case 'N':
- texto_a_cifrar[i] = 'n';
- break;
- case 'O':
- texto_a_cifrar[i] = 'o';
- break;
- case 'P':
- texto_a_cifrar[i] = 'p';
- break;
- case 'Q':
- texto_a_cifrar[i] = 'q';
- break;
- case 'R':
- texto_a_cifrar[i] = 'r';
- break;
- case 'S':
- texto_a_cifrar[i] = 's';
- break;
- case 'T':
- texto_a_cifrar[i] = 't';
- break;
- case 'U':
- texto_a_cifrar[i] = 'u';
- break;
- case 'V':
- texto_a_cifrar[i] = 'v';
- break;
- case 'W':
- texto_a_cifrar[i] = 'w';
- break;
- case 'X':
- texto_a_cifrar[i] = 'x';
- break;
- case 'Y':
- texto_a_cifrar[i] = 'y';
- break;
- case 'Z':
- texto_a_cifrar[i] = 'z';
- break;
- }
- switch (texto_a_cifrar[i])
- {
- case 'a':
- texto_a_cifrar[i] = 'k';
- break;
- case 'b':
- texto_a_cifrar[i] = 'p';
- break;
- case 'c':
- texto_a_cifrar[i] = 'h';
- break;
- case 'd':
- texto_a_cifrar[i] = 'o';
- break;
- case 'e':
- texto_a_cifrar[i] = 'j';
- break;
- case 'f':
- texto_a_cifrar[i] = 'a';
- break;
- case 'g':
- texto_a_cifrar[i] = 'c';
- break;
- case 'h':
- texto_a_cifrar[i] = 'n';
- break;
- case 'i':
- texto_a_cifrar[i] = 'y';
- break;
- case 'j':
- texto_a_cifrar[i] = 'e';
- break;
- case 'k':
- texto_a_cifrar[i] = 's';
- break;
- case 'l':
- texto_a_cifrar[i] = 'z';
- break;
- case 'm':
- texto_a_cifrar[i] = 'g';
- break;
- case 'n':
- texto_a_cifrar[i] = 'q';
- break;
- case 'o':
- texto_a_cifrar[i] = 'i';
- break;
- case 'p':
- texto_a_cifrar[i] = 'x';
- break;
- case 'q':
- texto_a_cifrar[i] = 'b';
- break;
- case 'r':
- texto_a_cifrar[i] = 't';
- break;
- case 's':
- texto_a_cifrar[i] = 'w';
- break;
- case 't':
- texto_a_cifrar[i] = 'r';
- break;
- case 'u':
- texto_a_cifrar[i] = 'u';
- break;
- case 'v':
- texto_a_cifrar[i] = 'd';
- break;
- case 'w':
- texto_a_cifrar[i] = 'l';
- break;
- case 'x':
- texto_a_cifrar[i] = 'v';
- break;
- case 'y':
- texto_a_cifrar[i] = 'm';
- break;
- case 'z':
- texto_a_cifrar[i] = 'f';
- break;
- case '\ ':
- texto_a_cifrar[i] = '0';
- break;
- case '1':
- texto_a_cifrar[i] = '%';
- break;
- case '2':
- texto_a_cifrar[i] = '&';
- break;
- case '3':
- texto_a_cifrar[i] = '/';
- break;
- case '4':
- texto_a_cifrar[i] = '(';
- break;
- case '5':
- texto_a_cifrar[i] = ')';
- break;
- case '6':
- texto_a_cifrar[i] = '=';
- break;
- case '7':
- texto_a_cifrar[i] = '?';
- break;
- case '8':
- texto_a_cifrar[i] = ';';
- break;
- case '9':
- texto_a_cifrar[i] = '.';
- break;
- case '0':
- texto_a_cifrar[i] = ',';
- break;
- default:
- texto_a_cifrar[i] = '*';
- break;
- }
- }
- /*End of Cifrado por substitucion */
- }
- void Capa2()
- {
- int i=0;
- for (i=0; i<longitud_de_texto_a_cifrar; i++)
- {
- switch (texto_a_cifrar[i])
- {
- case 'a':
- unir_numeros_asci += "97 ";
- unir_numeros_binarios += "1100001";
- break;
- case 'b':
- unir_numeros_asci += "98 ";
- unir_numeros_binarios += "1100010";
- break;
- case 'c':
- unir_numeros_asci += "99 ";
- unir_numeros_binarios += "1100011";
- break;
- case 'd':
- unir_numeros_asci += "100 ";
- unir_numeros_binarios += "1100100";
- break;
- case 'e':
- unir_numeros_asci += "101 ";
- unir_numeros_binarios += "1100101";
- break;
- case 'f':
- unir_numeros_asci += "102 ";
- unir_numeros_binarios += "1100110";
- break;
- case 'g':
- unir_numeros_asci += "103 ";
- unir_numeros_binarios += "1100111";
- break;
- case 'h':
- unir_numeros_asci += "104 ";
- unir_numeros_binarios += "1101000";
- break;
- case 'i':
- unir_numeros_asci += "105 ";
- unir_numeros_binarios += "1101001";
- break;
- case 'j':
- unir_numeros_asci += "106 ";
- unir_numeros_binarios += "1101010";
- break;
- case 'k':
- unir_numeros_asci += "107 ";
- unir_numeros_binarios += "1101011";
- break;
- case 'l':
- unir_numeros_asci += "108 ";
- unir_numeros_binarios += "1101100";
- break;
- case 'm':
- unir_numeros_asci += "109 ";
- unir_numeros_binarios += "1101101";
- break;
- case 'n':
- unir_numeros_asci += "110 ";
- unir_numeros_binarios += "1101110";
- break;
- case 'o':
- unir_numeros_asci += "111 ";
- unir_numeros_binarios += "1101111";
- break;
- case 'p':
- unir_numeros_asci += "112 ";
- unir_numeros_binarios += "1110000";
- break;
- case 'q':
- unir_numeros_asci += "113 ";
- unir_numeros_binarios += "1110001";
- break;
- case 'r':
- unir_numeros_asci += "114 ";
- unir_numeros_binarios += "1110010";
- break;
- case 's':
- unir_numeros_asci += "115 ";
- unir_numeros_binarios += "1110011";
- break;
- case 't':
- unir_numeros_asci += "116 ";
- unir_numeros_binarios += "1110100";
- break;
- case 'u':
- unir_numeros_asci += "117 ";
- unir_numeros_binarios += "1110101";
- break;
- case 'v':
- unir_numeros_asci += "118 ";
- unir_numeros_binarios += "1110110";
- break;
- case 'w':
- unir_numeros_asci += "119 ";
- unir_numeros_binarios += "1110111";
- break;
- case 'x':
- unir_numeros_asci += "120 ";
- unir_numeros_binarios += "1111000";
- break;
- case 'y':
- unir_numeros_asci += "121 ";
- unir_numeros_binarios += "1111001";
- break;
- case 'z':
- unir_numeros_asci += "122 ";
- unir_numeros_binarios += "1111010";
- break;
- case '\ ':
- unir_numeros_asci += "32 ";
- unir_numeros_binarios += "100000";
- break;
- case '1':
- unir_numeros_asci += "49 ";
- unir_numeros_binarios += "110001";
- break;
- case '2':
- unir_numeros_asci += "50 ";
- unir_numeros_binarios += "110010";
- break;
- case '3':
- unir_numeros_asci += "51 ";
- unir_numeros_binarios += "110011";
- break;
- case '4':
- unir_numeros_asci += "52 ";
- unir_numeros_binarios += "110100";
- break;
- case '5':
- unir_numeros_asci += "53 ";
- unir_numeros_binarios += "110101";
- break;
- case '6':
- unir_numeros_asci += "54 ";
- unir_numeros_binarios += "110110";
- break;
- case '7':
- unir_numeros_asci += "55 ";
- unir_numeros_binarios += "110111";
- break;
- case '8':
- unir_numeros_asci += "56 ";
- unir_numeros_binarios += "111000";
- break;
- case '9':
- unir_numeros_asci += "57 ";
- unir_numeros_binarios += "111001";
- break;
- case '0':
- unir_numeros_asci += "48 ";
- unir_numeros_binarios += "110000";
- break;
- case '%':
- unir_numeros_asci += "37 ";
- unir_numeros_binarios += "100101";
- break;
- case '&':
- unir_numeros_asci += "38 ";
- unir_numeros_binarios += "100110";
- break;
- case '/':
- unir_numeros_asci += "47 ";
- unir_numeros_binarios += "101111";
- break;
- case '(':
- unir_numeros_asci += "40 ";
- unir_numeros_binarios += "101000";
- break;
- case ')':
- unir_numeros_asci += "41 ";
- unir_numeros_binarios += "101001";
- break;
- case '=':
- unir_numeros_asci += "61 ";
- unir_numeros_binarios += "111101";
- break;
- case '?':
- unir_numeros_asci += "63 ";
- unir_numeros_binarios += "111111";
- break;
- case ';':
- unir_numeros_asci += "59 ";
- unir_numeros_binarios += "111011";
- break;
- case '.':
- unir_numeros_asci += "46 ";
- unir_numeros_binarios += "101110";
- break;
- case ',':
- unir_numeros_asci += "44 ";
- unir_numeros_binarios += "101100";
- break;
- case '*':
- unir_numeros_asci += "42 ";
- unir_numeros_binarios += "101010";
- break;
- default:
- break;
- }
- }}
- void MostrarCifradoEnPantalla()
- {
- cout << texto_a_cifrar << endl <<endl;
- cout << "Numero de caracteres introducidos: " << longitud_de_texto_a_cifrar << endl << endl;
- cout << "Este es el numero ascii: " << unir_numeros_asci << endl;
- cout << "Este es el numero binario: " << unir_numeros_binarios << endl;
- cout << endl << endl<< "Todos los datos del cifrado han sido almacenados en el archivo de texto\nDatosCifrados.txt que se encuentra en la misma carpeta que el programa\nque esta ejecutando."
- << endl;
- }
- void CrearTxt()
- {
- string palabra_1 = "TEXTO ORIGINAL -> \ ";
- string palabra_2 = "\nTEXTO CIFRADO -> \ ";
- string palabra_3 = "\nTEXTO CIFRADO EN ASCII -> \ ";
- string palabra_4 = "\nTEXTO CIFRADO EN BINARIO -> \ ";
- string palabra_5 = "\nEL TEXTO INTRODUCIDO CONTIENE: ";
- string palabra_6 = " CARACTERES";
- string palabra_8 = "\nTEXTO CIFRADO EN BASE64 -> \ ";
- string numero_de_caracteres;
- ostringstream conversion_de_int_a_string;
- conversion_de_int_a_string << longitud_de_texto_a_cifrar;
- numero_de_caracteres = conversion_de_int_a_string.str();
- string datos_a_archivo_de_texto = palabra_1 + texto_original + palabra_2 + texto_a_cifrar + palabra_3 + unir_numeros_asci + palabra_4 + unir_numeros_binarios + palabra_8 + binarioConvertidoABase64 + palabra_5 + numero_de_caracteres + palabra_6;
- ofstream WriteFile("DatosCifrados.txt");
- WriteFile << datos_a_archivo_de_texto;
- WriteFile.close();
- }
- void binarioAbase64()
- {
- int DIVISOR = 6;
- size_t relleno = DIVISOR -(unir_numeros_binarios.size() % DIVISOR);
- for(size_t i = 0; i < relleno; ++i)
- unir_numeros_binarios += '0';
- size_t num_subcadenas = unir_numeros_binarios.size() /DIVISOR;
- string *vector_string = new string [num_subcadenas];
- for(size_t i = 0; i < num_subcadenas; ++i)
- for(size_t j = 0; j < DIVISOR; ++j)
- vector_string[i] += unir_numeros_binarios[i*DIVISOR+j];
- for(int i = 0; i < num_subcadenas; ++i)
- {
- cout << "vector_string "<< i+1 <<" = " << vector_string[i] << endl << endl;
- }
- binarioConvertidoABase64 = "";
- for(int i = 0; i < num_subcadenas; ++i)
- {
- if (vector_string[i] == "000001")
- {
- binarioConvertidoABase64.append("A"); //1
- }
- if (vector_string[i] == "000010")
- {
- binarioConvertidoABase64.append("B");//2
- }
- if (vector_string[i] == "000011")
- {
- binarioConvertidoABase64.append("C"); //3
- }
- if (vector_string[i] == "000100")
- {
- binarioConvertidoABase64.append("D");//4
- }
- if (vector_string[i] == "000101")
- {
- binarioConvertidoABase64.append("E");//5
- }
- if (vector_string[i] == "000110")
- {
- binarioConvertidoABase64.append("F");//6
- }
- if (vector_string[i] == "000111")
- {
- binarioConvertidoABase64.append("G");
- }
- if (vector_string[i] == "001000")
- {
- binarioConvertidoABase64.append("H");
- }
- if (vector_string[i] == "001001")
- {
- binarioConvertidoABase64.append("I");
- }
- if (vector_string[i] == "001010")
- {
- binarioConvertidoABase64.append("J");
- }
- if (vector_string[i] == "001011")
- {
- binarioConvertidoABase64.append("K");
- }
- if (vector_string[i] == "001100")
- {
- binarioConvertidoABase64.append("L");
- }
- if (vector_string[i] == "001101")
- {
- binarioConvertidoABase64.append("M");
- }
- if (vector_string[i] == "001110")
- {
- binarioConvertidoABase64.append("N");
- }
- if (vector_string[i] == "001111")
- {
- binarioConvertidoABase64.append("O");
- }
- if (vector_string[i] == "010000")
- {
- binarioConvertidoABase64.append("P");
- }
- if (vector_string[i] == "010001")
- {
- binarioConvertidoABase64.append("Q");
- }
- if (vector_string[i] == "010010")
- {
- binarioConvertidoABase64.append("R");
- }
- if (vector_string[i] == "010011")
- {
- binarioConvertidoABase64.append("S");
- }
- if (vector_string[i] == "010100")
- {
- binarioConvertidoABase64.append("T");
- }
- if (vector_string[i] == "010101")
- {
- binarioConvertidoABase64.append("U");
- }
- if (vector_string[i] == "010110")
- {
- binarioConvertidoABase64.append("V");
- }
- if (vector_string[i] == "010111")
- {
- binarioConvertidoABase64.append("W");
- }
- if (vector_string[i] == "011000")
- {
- binarioConvertidoABase64.append("X");
- }
- if (vector_string[i] == "011001")
- {
- binarioConvertidoABase64.append("Y");
- }
- if (vector_string[i] == "011010")
- {
- binarioConvertidoABase64.append("Z");
- }
- if (vector_string[i] == "011011")
- {
- binarioConvertidoABase64.append("a");
- }
- if (vector_string[i] == "011100")
- {
- binarioConvertidoABase64.append("b");
- }
- if (vector_string[i] == "011101")
- {
- binarioConvertidoABase64.append("c");
- }
- if (vector_string[i] == "011110")
- {
- binarioConvertidoABase64.append("d");
- }
- if (vector_string[i] == "011111")
- {
- binarioConvertidoABase64.append("e");
- }
- if (vector_string[i] == "100000")
- {
- binarioConvertidoABase64.append("f");
- }
- if (vector_string[i] == "100001")
- {
- binarioConvertidoABase64.append("g");
- }
- if (vector_string[i] == "100010")
- {
- binarioConvertidoABase64.append("h");
- }
- if (vector_string[i] == "100011")
- {
- binarioConvertidoABase64.append("i");
- }
- if (vector_string[i] == "100100")
- {
- binarioConvertidoABase64.append("j");
- }
- if (vector_string[i] == "100101")
- {
- binarioConvertidoABase64.append("k");
- }
- if (vector_string[i] == "100110")
- {
- binarioConvertidoABase64.append("l");
- }
- if (vector_string[i] == "100111")
- {
- binarioConvertidoABase64.append("m");
- }
- if (vector_string[i] == "101000")
- {
- binarioConvertidoABase64.append("n");
- }
- if (vector_string[i] == "101001")
- {
- binarioConvertidoABase64.append("o");
- }
- if (vector_string[i] == "101010")
- {
- binarioConvertidoABase64.append("p");
- }
- if (vector_string[i] == "101011")
- {
- binarioConvertidoABase64.append("q");
- }
- if (vector_string[i] == "101100")
- {
- binarioConvertidoABase64.append("r");
- }
- if (vector_string[i] == "101101")
- {
- binarioConvertidoABase64.append("s");
- }
- if (vector_string[i] == "101110")
- {
- binarioConvertidoABase64.append("t");
- }
- if (vector_string[i] == "101111")
- {
- binarioConvertidoABase64.append("u");
- }
- if (vector_string[i] == "110000")
- {
- binarioConvertidoABase64.append("v");
- }
- if (vector_string[i] == "110001")
- {
- binarioConvertidoABase64.append("w");
- }
- if (vector_string[i] == "110010")
- {
- binarioConvertidoABase64.append("x");
- }
- if (vector_string[i] == "110011")
- {
- binarioConvertidoABase64.append("y");
- }
- if (vector_string[i] == "110100")
- {
- binarioConvertidoABase64.append("z");
- }
- if (vector_string[i] == "110101")
- {
- binarioConvertidoABase64.append("0");
- }
- if (vector_string[i] == "110110")
- {
- binarioConvertidoABase64.append("1");
- }
- if (vector_string[i] == "110111")
- {
- binarioConvertidoABase64.append("2");
- }
- if (vector_string[i] == "111000")
- {
- binarioConvertidoABase64.append("3");
- }
- if (vector_string[i] == "111001")
- {
- binarioConvertidoABase64.append("4");
- }
- if (vector_string[i] == "111010")
- {
- binarioConvertidoABase64.append("5");
- }
- if (vector_string[i] == "111011")
- {
- binarioConvertidoABase64.append("6");
- }
- if (vector_string[i] == "111100")
- {
- binarioConvertidoABase64.append("7");
- }
- if (vector_string[i] == "111101")
- {
- binarioConvertidoABase64.append("8");
- }
- if (vector_string[i] == "111110")
- {
- binarioConvertidoABase64.append("9");
- }
- if (vector_string[i] == "111111")
- {
- binarioConvertidoABase64.append("/");
- }
- if (vector_string[i] == "000000")
- {
- binarioConvertidoABase64.append("-");
- }
- }
- binarioConvertidoABase64.append("==");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement