//This program is free software: you can redistribute it and/or modify it under the terms #of the GNU General Public License as published by the Free Software Foundation, either #version 3 of the License, or (at your option) any later version. //This program is distributed in the hope that it will be useful, but WITHOUT ANY #WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A #PARTICULAR PURPOSE. See the GNU General Public License for more details. //You should have received a copy of the GNU General Public License along with this #program. If not, see #include "mainwindow.h" #include "ui_mainwindow.h" #include "crypt.h" #include #include #include #include #include #include #include #include //Librería de manejo de archivos en c++ #include "error.h" #include "caesar.h" #include "vigenere.h" #include "enigma.h" #include "khufu.h" #include "lucifer.h" #include "random.h" #include "rot13.h" #include "transpos.h" #include "blowfish.h" #include "xor.h" #include "tinyrsa.h" #include "otpf.h" #include "des.h" #include "des_c.h" #include "idea.h" #include #include "conversor.h" #include #include using namespace std; char *toHexRepresentation(const char *ba, int length) { if(length == 0) return qstrdup(""); /* We output at maximum about maxLen characters in order to avoid * running out of memory and flooding things when the byte array * is large. * * maxLen can't be for example 200 because QTestLib is sprinkled with fixed * size char arrays. * */ const int maxLen = 50; const int len = qMin(maxLen, length); char *result = 0; if(length > maxLen) { const int size = len * 3 + 4; result = new char[size]; char *const forElipsis = result + size - 5; forElipsis[0] = ' '; forElipsis[1] = '.'; forElipsis[2] = '.'; forElipsis[3] = '.'; result[size - 1] = '\0'; } else { const int size = len * 3; result = new char[size]; result[size - 1] = '\0'; } const char toHex[] = "0123456789ABCDEF"; int i = 0; int o = 0; while(true) { const char at = ba[i]; result[o] = toHex[(at >> 4) & 0x0F]; ++o; result[o] = toHex[at & 0x0F]; ++i; ++o; if(i == len) break; else { result[o] = ' '; ++o; } } return result; } void MainWindow::imprimirDocumentacion(int modo){ QString absolutePath; switch(modo){ case 1: absolutePath = "1.txt"; break; case 2: absolutePath = "2.txt"; break; case 3: absolutePath = "3.txt"; break; case 4: absolutePath = "4.txt"; break; case 5: absolutePath = "5.txt"; break; case 6: absolutePath = "6.txt"; break; case 7: absolutePath = "7.txt"; break; case 8: absolutePath = "8.txt"; break; case 9: absolutePath = "9.txt"; break; case 10: absolutePath = "10.txt"; break; case 11: absolutePath = "11.txt"; break; } QFile scriptFile(absolutePath); scriptFile.open(QIODevice::ReadOnly); ui->descripcion->setText(scriptFile.readAll()); scriptFile.close(); } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); algoritmo=""; formatoLlano="ascii"; ui->textoLlanoASCII->setDown(true); ui->textoLlanoASCII->setChecked(true); formatoCifrado="ascii"; ui->textoCifradoASCII->setDown(true); ui->textoCifradoASCII->setChecked(true); formatoKey="ascii"; ui->textoKeyASCII->setDown(true); ui->textoKeyASCII->setChecked(true); ui->panelTextoKey->setDisabled(true); QImage miImagen("imagen1.png"); ui->imagen->setPixmap(QPixmap::fromImage(miImagen)); ui->imagen->setScaledContents(true); } MainWindow::~MainWindow() { delete ui; } //Probar ahora con mostrar resultados de otro modo void MainWindow::muestraResultadosCifrados(){ //QString absolutePath = "C:/Users/pilot/Desktop/destino.txt"; QString absolutePath = "destino.txt"; QFile scriptFile(absolutePath); scriptFile.open(QIODevice::ReadOnly); ui->panelTextoCifrado->setPlainText(scriptFile.readAll()); scriptFile.close(); } void MainWindow::muestraResultadosDescifrados(){ //QString absolutePath = "C:/Users/pilot/Desktop/origen.txt"; QString absolutePath = "origen.txt"; QFile scriptFile(absolutePath); scriptFile.open(QIODevice::ReadOnly); ui->panelTextoLlano->setPlainText(scriptFile.readAll()); scriptFile.close(); } /* void MainWindow::guardaFicheros(int modo){ //0 para guardar llano 1 para guardar cifrado if(modo!=0 || modo!=1){ ui->consolaMensajes->setPlainText("Error en el MODO."); } if(modo==0){ QString absolutePath = "C:/Users/pilot/Desktop/origen.txt"; //QString absolutePath = "origen.txt"; QString absolutePath2 = "C:/Users/pilot/Desktop/origen_key.txt"; //QString absolutePath2 = "origen_key.txt"; QString contenido_llano = ui->panelTextoLlano->toPlainText(); QString contenido_key = ui->panelTextoKey->toPlainText(); QFile file(absolutePath); if (!file.open(QIODevice::WriteOnly)) { //QMessageBox::information(this, tr("Unable to open file"), // file.errorString()); //return; ui->consolaMensajes->setText("No he podido escribir Llano"); } QTextStream in(&file); in << contenido_llano; file.close(); QFile file2(absolutePath2); if (!file2.open(QIODevice::WriteOnly)) { ui->consolaMensajes->setText("No he podido escribir Llano"); } QTextStream in2(&file2); in2 << contenido_key; file2.close(); } else if(modo==1){ QString absolutePath = "C:/Users/pilot/Desktop/destino.txt"; //QString absolutePath = "destino.txt"; QString absolutePath2 = "C:/Users/pilot/Desktop/origen_key.txt"; //QString absolutePath2 = "origen_key.txt"; QString contenido_cifrado = ui->panelTextoCifrado->toPlainText(); QString contenido_key = ui->panelTextoKey->toPlainText(); QFile file(absolutePath); if (!file.open(QIODevice::WriteOnly)) { //QMessageBox::information(this, tr("Unable to open file"), // file.errorString()); //return; ui->consolaMensajes->setText("No he podido escribir Cifrado."); } QTextStream in(&file); in << contenido_cifrado; file.close(); QFile file2(absolutePath2); if (!file2.open(QIODevice::WriteOnly)) { ui->consolaMensajes->setText("No he podido escribir Llano"); } QTextStream in2(&file2); in2 << contenido_key; file2.close(); } } */ void MainWindow::guardaFicheros_paraEncriptar(){ //char * origen="C:/Users/pilot/Desktop/origen.txt"; char * origen="origen.txt"; //char *destino="C:/Users/pilot/Desktop/destino.txt"; char *destino="destino.txt"; //char * origen_key="C:/Users/pilot/Desktop/origen_key.txt"; char * origen_key="origen_key.txt"; //Quiero encriptar el texto de panel encriptado. Para lo cual lo guardo en //un fichero llamado origen.txt y la llave en uno llamado origen_key.txt ofstream out(origen, ios::out); if(!out) { //cout << "Cannot open output file.\n"; ui->consolaMensajes->setText("Error al escribir fichero"); //return 1; } else{ string contenido=ui->panelTextoLlano->toPlainText().toStdString(); out << contenido; out.close(); } ofstream out2(origen_key, ios::out); if(!out2) { //cout << "Cannot open output file.\n"; ui->consolaMensajes->setText("Error al escribir fichero"); //return 1; } else{ string contenido=ui->panelTextoKey->toPlainText().toStdString(); out2 << contenido; out2.close(); } } void MainWindow::guardaFicheros_paraDesencriptar(){ //char * origen="C:/Users/pilot/Desktop/origen.txt"; char * origen="origen.txt"; //char *destino="C:/Users/pilot/Desktop/destino.txt"; char *destino="destino.txt"; //char * origen_key="C:/Users/pilot/Desktop/origen_key.txt"; char * origen_key="origen_key.txt"; //Quiero encriptar el texto de panel encriptado. Para lo cual lo guardo en //un fichero llamado origen.txt y la llave en uno llamado origen_key.txt ofstream out(destino, ios::out); if(!out) { //cout << "Cannot open output file.\n"; ui->consolaMensajes->setText("Error al escribir fichero"); //return 1; } else{ string contenido=ui->panelTextoCifrado->toPlainText().toStdString(); out << contenido; out.close(); } ofstream out2(origen_key, ios::out); if(!out2) { //cout << "Cannot open output file.\n"; ui->consolaMensajes->setText("Error al escribir fichero"); //return 1; } else{ string contenido=ui->panelTextoKey->toPlainText().toStdString(); out2 << contenido; out2.close(); } } void MainWindow::guardaFicheroParaEncriptarBlowfish(){ char * origen="C:/Users/pilot/Desktop/origen.txt"; char *destino="C:/Users/pilot/Desktop/destino.txt"; char * origen_key="C:/Users/pilot/Desktop/origen_key.txt"; ofstream out(origen, ios::out); if(!out) { //cout << "Cannot open output file.\n"; ui->consolaMensajes->setText("Error al escribir fichero"); //return 1; } else{ string contenido=ui->panelTextoLlano->toPlainText().toStdString(); out << contenido; out.close(); } } void MainWindow::on_actionSalir_triggered() { this->close(); } void MainWindow::on_actionAcerca_de_triggered() { QString acerca="Escuela Técnica Superior de Ingeniería Informatica y Telecomunicaciónes.\nUniversidad de Granada\nProfesor: Álvaro Antonio Martínez Sevilla \nAutor: Alberto Rodríguez Frías\nalberpilot@gmail.com\n\nEl autor de parte de código fuente de los algoritmos de cifrado simétrico: \nWillis E. Howard\nCurso 2010/2011 Asignatura: Seguridad y Protección de Sistemas Informáticos.\n\n web: http://proyectoteas.blogspot.com"; QMessageBox::about(this, "Acerca de TEAS", acerca); } void MainWindow::on_botonEncriptar_clicked() { //Variables de control de tiempo de ejecucion del algoritmo clock_t t_antes,t_despues; ui->textoLlanoASCII->setDown(true); ui->textoLlanoASCII->setChecked(true); ui->textoCifradoASCII->setDown(true); ui->textoCifradoASCII->setChecked(true); ui->textoKeyASCII->setDown(true); ui->textoKeyASCII->setChecked(true); on_textoLlanoASCII_clicked(); on_textoCifradoASCII_clicked(); on_textoKeyASCII_clicked(); if((ui->panelTextoLlano->toPlainText()).toStdString()==""){ ui->consolaMensajes->setPlainText("No hay texto en el panel de Texto Llano. "); } else{ //UBICACION DE ARCHIVOS DE ORIGEN Y DESTINO DE TEXTO. DEBEN ESTAR CREADOS PREVIAMENTE. //Aunque estén vacios. //char *origen="C:/Users/pilot/Desktop/origen.txt"; char *origen="origen.txt"; //char *origen_key="C:/Users/pilot/Desktop/origen_key.txt"; char *origen_key="origen_key.txt"; //char *destino="C:/Users/pilot/Desktop/destino.txt"; char *destino="destino.txt"; //if(algoritmo!="blowfish") // guardaFicheros(0); guardaFicheros_paraEncriptar(); /******************** SIN ALGORITMO CRIFRAR *****************************************/ //Si no hay algoritmo seleccionado... if(algoritmo==""){ ui->consolaMensajes->setText("No hay algoritmo seleccionado."); } /******************** ALGORITMO CAESAR CIFRAR ****************************************/ else if(algoritmo=="caesar"){ crypt_select_caesar(0); //Limpio La Consola ui->consolaMensajes->setText(""); //Mido Tiempo: Cojo el tiempo actual t_antes = clock(); //Cifro int resultado= crypt_file_caesar( origen, destino); t_despues = clock(); //Compruebo que no haya error al cifrar if(resultado!=0){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } }//Fin de opcion Caesar /******************** ALGORITMO VIGENERE CIFRAR ******************************************/ else if(algoritmo=="vigenere"){ crypt_select_vigenere(0); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); //Cifro t_antes = clock(); int resul_key=crypt_key_vigenere(1, origen_key); int resultado= crypt_file_vigenere( origen, destino); crypt_key_erase_vigenere(); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } } }//Fin de opcion Vigenere /******************** ALGORITMO ENIGMA CIFRAR ****************************************/ else if(algoritmo=="enigma"){ crypt_select_enigma(0); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_enigma(1, origen_key); int resultado= crypt_file_enigma( origen, destino); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } } }//Fin de opcion Enigma /******************** ALGORITMO KHUFU CIFRAR ****************************************/ else if(algoritmo=="khufu"){ //crypt_key_erase(); crypt_key_erase_khufu(); crypt_select_khufu(0); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_khufu(1, origen_key); int resultado= crypt_file_khufu( origen, destino); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } } }//Fin de opcion khufu /******************** ALGORITMO LUCIFER CIFRAR ****************************************/ else if(algoritmo=="lucifer"){ crypt_select_lucifer(0); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_lucifer(1, origen_key); int resultado= crypt_file_lucifer( origen, destino); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } } }//Fin de opcion lucifer /******************** ALGORITMO RANDOM CIFRAR ****************************************/ else if(algoritmo=="random"){ //crypt_key_erase(); crypt_key_erase_random(); crypt_select_random(0); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_random(1, origen_key); int resultado= crypt_file_random( origen, destino); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } } }//Fin de opcion random /******************** ALGORITMO ROT13 CIFRAR ****************************************/ else if(algoritmo=="rot13"){ crypt_select_rot13(0); //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_rot13(1, origen_key); int resultado= crypt_file_rot13( origen, destino); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } }//Fin de opcion rot13 /******************** ALGORITMO TRANSPOSE CIFRAR ****************************************/ else if(algoritmo=="transpos"){ crypt_select_transpos(0); //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_transpos(1, origen_key); int resultado= crypt_file_transpos( origen, destino); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } }//Fin de opcion rot13 /******************** ALGORITMO BLOWFISH CIFRAR ****************************************/ else if(algoritmo=="blowfish"){ //guardaFicheroParaEncriptarBlowfish(); crypt_select_blowfish(0); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_blowfish(1, origen_key); int resultado= crypt_file_blowfish( origen, destino); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } } }//Fin de opcion blowfish /******************** ALGORITMO XOR CIFRAR ****************************************/ else if(algoritmo=="xor"){ crypt_select_xor(0); //Limpio La Consola ui->consolaMensajes->setText(""); //Mido Tiempo: Cojo el tiempo actual t_antes = clock(); //Cifro int resul_key=crypt_key_xor(1, origen_key); int resultado= crypt_file_xor( origen, destino); t_despues = clock(); //Compruebo que no haya error al cifrar if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) //double tiempo2=2.3; ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } }//Fin de opcion xor /******************** ALGORITMO TINYRSA CIFRAR ****************************************/ else if(algoritmo=="tinyrsa"){ crypt_select_tinyrsa(0); //Limpio La Consola ui->consolaMensajes->setText(""); //Mido Tiempo: Cojo el tiempo actual t_antes = clock(); //Cifro int resul_key=crypt_key_tinyrsa(1, origen_key); int resultado= crypt_file_tinyrsa( origen, destino); t_despues = clock(); //Compruebo que no haya error al cifrar if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) //double tiempo2=2.3; ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } }//Fin de opcion tinyrsa /******************** ALGORITMO OTPF CIFRAR ****************************************/ else if(algoritmo=="otpf"){ crypt_select_otpf(0); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_otpf(1, origen_key); int resultado= crypt_file_otpf( origen, destino); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } } }//Fin de opcion otpf /******************** ALGORITMO DES CIFRAR ******************************************/ else if(algoritmo=="des"){ crypt_select_des(0); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); //Cifro t_antes = clock(); int resul_key=crypt_key_des(1, origen_key); int resultado= crypt_file_des( origen, destino); crypt_key_erase_des(); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } } }//Fin de opcion Des /******************** ALGORITMO DES_C CIFRAR ******************************************/ else if(algoritmo=="des_c"){ crypt_select_des_c(0); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); //Cifro t_antes = clock(); int resul_key=crypt_key_des_c(1, origen_key); int resultado= crypt_file_des_c( origen, destino); crypt_key_erase_des(); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } } }//Fin de opcion Des_c /******************** ALGORITMO IDEA CIFRAR ******************************************/ else if(algoritmo=="idea"){ crypt_select_idea(0); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); //Cifro t_antes = clock(); int resul_key=crypt_key_idea(1, origen_key); int resultado= crypt_file_idea( origen, destino); crypt_key_erase_idea(); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosCifrados(); } } }//Fin de opcion Idea } } void MainWindow::on_botonDesencriptar_clicked() { clock_t t_antes,t_despues; ui->textoLlanoASCII->setDown(true); ui->textoLlanoASCII->setChecked(true); ui->textoCifradoASCII->setDown(true); ui->textoCifradoASCII->setChecked(true); ui->textoKeyASCII->setDown(true); ui->textoKeyASCII->setChecked(true); on_textoLlanoASCII_clicked(); on_textoCifradoASCII_clicked(); on_textoKeyASCII_clicked(); if((ui->panelTextoCifrado->toPlainText()).toStdString()==""){ ui->consolaMensajes->setPlainText("No hay texto en el panel de Texto Cifrado. "); } else{ //UBICACION DE ARCHIVOS DE ORIGEN Y DESTINO DE TEXTO. DEBEN ESTAR CREADOS PREVIAMENTE. //Aunque estén vacios. //char *origen="C:/Users/pilot/Desktop/origen.txt"; char *origen="origen.txt"; //char *origen_key="C:/Users/pilot/Desktop/origen_key.txt"; char *origen_key="origen_key.txt"; //char *destino="C:/Users/pilot/Desktop/destino.txt"; char *destino="destino.txt"; // guardaFicheros(1);//Cambiado guardaFicheros_paraDesencriptar(); /******************** SIN ALGORITMO DESCIFRAR ****************************************/ //Si no hay algoritmo seleccionado... if(algoritmo==""){ ui->consolaMensajes->setText("No hay algoritmo seleccionado."); } /******************** ALGORITMO CAESAR DESCIFRAR ****************************************/ else if(algoritmo=="caesar"){ crypt_select_caesar(1); //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resultado= crypt_file_caesar( destino, origen); t_despues = clock(); //Compruebo que no haya error al cifrar if(resultado!=0){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } }//Fin de opcion Caesar /******************** ALGORITMO VIGENERE DESCIFRAR ****************************************/ else if(algoritmo=="vigenere"){ crypt_select_vigenere(1); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); //Mido Tiempo: Cojo el tiempo actual t_antes = clock(); //Cifro int resul_key=crypt_key_vigenere(1, origen_key); //crypt_select_caesar( 1 ); int resultado= crypt_file_vigenere( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ //Limpio consola //ui->lcdNumber->display(tiempo); ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } } }//Fin de opcion Vigenere /******************** ALGORITMO ENIGMA DESCIFRAR ****************************************/ else if(algoritmo=="enigma"){ crypt_select_enigma(1); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_enigma(1, origen_key); int resultado= crypt_file_enigma( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } } }//Fin de opcion Enigma /******************** ALGORITMO KHUFU DESCIFRAR ****************************************/ else if(algoritmo=="khufu"){ //crypt_key_erase(); crypt_key_erase_khufu(); crypt_select_khufu(1); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_khufu(1, origen_key); int resultado= crypt_file_khufu( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } } }//Fin de opcion khufu /******************** ALGORITMO LUCIFER DESCIFRAR ****************************************/ else if(algoritmo=="lucifer"){ //crypt_key_erase(); crypt_key_erase_lucifer(); crypt_select_lucifer(1); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_lucifer(1, origen_key); int resultado= crypt_file_lucifer( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } } }//Fin de opcion lucifer /******************** ALGORITMO RANDOM DESCIFRAR ****************************************/ else if(algoritmo=="random"){ //crypt_key_erase(); crypt_key_erase_random(); crypt_select_random(1); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_random(1, origen_key); int resultado= crypt_file_random( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } } }//Fin de opcion random /******************** ALGORITMO ROT13 DESCIFRAR ****************************************/ else if(algoritmo=="rot13"){ crypt_select_rot13(1); //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_rot13(1, origen_key); int resultado= crypt_file_rot13( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } }//Fin de opcion rot13 /******************** ALGORITMO TRANSPOSE DESCIFRAR ****************************************/ else if(algoritmo=="transpos"){ crypt_select_transpos(1); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_transpos(1, origen_key); int resultado= crypt_file_transpos( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } } }//Fin de opcion transpos /******************** ALGORITMO BLOWFISH DESCIFRAR ****************************************/ else if(algoritmo=="blowfish"){ crypt_select_blowfish(1); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_blowfish(1, origen_key); int resultado= crypt_file_blowfish( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } } }//Fin de opcion blowfish /******************** ALGORITMO XOR DESCIFRAR ****************************************/ else if(algoritmo=="xor"){ crypt_select_xor(1); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_xor(1, origen_key); int resultado= crypt_file_xor( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } } }//Fin de opcion xor /******************** ALGORITMO TINYRSA DESCIFRAR ****************************************/ else if(algoritmo=="tinyrsa"){ crypt_select_tinyrsa(1); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); //Cifro int resul_key=crypt_key_tinyrsa(1, origen_key); int resultado= crypt_file_tinyrsa( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } } }//Fin de opcion tinyrsa /******************** ALGORITMO OTPF DESCIFRAR ****************************************/ else if(algoritmo=="otpf"){ crypt_select_otpf(1); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); t_antes = clock(); int resul_key=crypt_key_otpf(1, origen_key); //crypt_select_caesar( 1 ); int resultado= crypt_file_otpf( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } } }//Fin de opcion otpf /******************** ALGORITMO DES DESCIFRAR ****************************************/ else if(algoritmo=="des"){ crypt_select_des(1); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); //Mido Tiempo: Cojo el tiempo actual t_antes = clock(); //Cifro int resul_key=crypt_key_des(1, origen_key); //crypt_select_caesar( 1 ); int resultado= crypt_file_des( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ double tiempo=((t_despues - t_antes)*10);///(CLOCKS_PER_SEC * 10) ui->lcdNumber->display(tiempo); //Limpio consola ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } } }//Fin de opcion Des /******************** ALGORITMO DES_C DESCIFRAR ****************************************/ else if(algoritmo=="des_c"){ crypt_select_des_c(1); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); //Mido Tiempo: Cojo el tiempo actual t_antes = clock(); //Cifro int resul_key=crypt_key_des_c(1, origen_key); //crypt_select_caesar( 1 ); int resultado= crypt_file_des_c( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ //Limpio consola //ui->lcdNumber->display(tiempo); ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } } }//Fin de opcion Des_c /******************** ALGORITMO IDEA DESCIFRAR ****************************************/ else if(algoritmo=="idea"){ crypt_select_idea(1); if(ui->panelTextoKey->toPlainText().toStdString()==""){ ui->consolaMensajes->setText("No hay clave"); } else{ //Limpio La Consola ui->consolaMensajes->setText(""); //Mido Tiempo: Cojo el tiempo actual t_antes = clock(); //Cifro int resul_key=crypt_key_idea(1, origen_key); //crypt_select_caesar( 1 ); int resultado= crypt_file_idea( destino, origen); t_despues = clock(); if(resul_key!=0 || resultado!=0 ){ ui->consolaMensajes->setText("Error con los ficheros de Origen y/o Destino."); } //Si no hay error, pongo las cosas donde deben else{ //Limpio consola //ui->lcdNumber->display(tiempo); ui->consolaMensajes->setText(""); muestraResultadosDescifrados(); } } }//Fin de opcion Idea }//Fin else de si hay texto en la caja } void MainWindow::on_comboBoxAlgoritmo_activated(int index) { if(index==0){ algoritmo=""; ui->panelTextoKey->setDisabled(true); ui->lcdNumber->display(0); } else if(index==1){ algoritmo="caesar"; ui->panelTextoKey->setDisabled(true); ui->lcdNumber->display(0); imprimirDocumentacion(1);ui->consolaMensajes->setText(""); } else if(index==2){ algoritmo="vigenere"; ui->panelTextoKey->setDisabled(false); ui->lcdNumber->display(0); ui->consolaMensajes->setText("ATENCIÓN: La llave no puede contener espacios."); imprimirDocumentacion(2); } /* else if(index==3){ algoritmo="enigma"; ui->panelTextoKey->setDisabled(false); ui->lcdNumber->display(0); }*/ else if(index==5){ imprimirDocumentacion(5); algoritmo="khufu"; ui->panelTextoKey->setDisabled(false); ui->lcdNumber->display(0); ui->consolaMensajes->setText(""); } else if(index==6){ imprimirDocumentacion(6); algoritmo="lucifer"; ui->panelTextoKey->setDisabled(false); ui->lcdNumber->display(0);ui->consolaMensajes->setText(""); } else if(index==7){ imprimirDocumentacion(7); algoritmo="random"; ui->panelTextoKey->setDisabled(false); ui->lcdNumber->display(0);ui->consolaMensajes->setText(""); } else if(index==3){ imprimirDocumentacion(3); algoritmo="rot13"; ui->panelTextoKey->setDisabled(true); ui->lcdNumber->display(0);ui->consolaMensajes->setText(""); }/* else if(index==5){ algoritmo="transpos"; ui->consolaMensajes->setText("ATENCIÓN: La llave esta compuesta de uno o dos numeros.\nEstos deben estar comprendidos entre 2 y 128."); ui->panelTextoKey->setDisabled(false); ui->lcdNumber->display(0); }*/ else if(index==4){ imprimirDocumentacion(4); algoritmo="blowfish"; ui->panelTextoKey->setDisabled(false); ui->lcdNumber->display(0);ui->consolaMensajes->setText(""); } else if(index==8){ imprimirDocumentacion(8); algoritmo="xor"; ui->panelTextoKey->setDisabled(false); ui->lcdNumber->display(0);ui->consolaMensajes->setText(""); }/* else if(index==9){ algoritmo="tinyrsa"; ui->panelTextoKey->setDisabled(false); ui->lcdNumber->display(0); } else if(index==12){ algoritmo="otpf"; ui->panelTextoKey->setDisabled(false); ui->lcdNumber->display(0); }*/ else if(index==9){ imprimirDocumentacion(9); algoritmo="des"; ui->panelTextoKey->setDisabled(false); ui->lcdNumber->display(0);ui->consolaMensajes->setText(""); } else if(index==10){ imprimirDocumentacion(10); algoritmo="des_c"; ui->panelTextoKey->setDisabled(false); ui->lcdNumber->display(0);ui->consolaMensajes->setText(""); } else if(index==11){ imprimirDocumentacion(11); algoritmo="idea"; ui->panelTextoKey->setDisabled(false); ui->lcdNumber->display(0);ui->consolaMensajes->setText(""); } } void MainWindow::on_actionLimpiar_triggered() { ui->panelTextoCifrado->clear(); ui->panelTextoLlano->clear(); ui->panelTextoKey->clear(); ui->comboBoxAlgoritmo->setCurrentIndex(0); algoritmo=""; ui->consolaMensajes->clear(); ui->lcdNumber->display(0); } void MainWindow::on_textoLlanoHEX_clicked() { if(formatoLlano=="ascii"){ const char* hola=(toHexRepresentation ( strdup(ui->panelTextoLlano->toPlainText().toStdString().c_str()), ui->panelTextoLlano->toPlainText().toStdString().size() )); ui->panelTextoLlano->setText(hola); } else if(formatoLlano=="bin"){ QString mandar(strdup(ui->panelTextoLlano->toPlainText().toStdString().c_str())); QString binario=BinaryToHex(mandar); ui->panelTextoLlano->setText(binario); } else if(formatoLlano=="hex"){} formatoLlano="hex"; } void MainWindow::on_textoLlanoBIN_clicked() { if(formatoLlano=="hex"){ QString mandar(strdup(ui->panelTextoLlano->toPlainText().toStdString().c_str())); QString binario=HexToBinary(mandar); ui->panelTextoLlano->setText(binario); } else if(formatoLlano=="ascii"){ //Lo paso a Hexa const char* hola=(toHexRepresentation ( strdup(ui->panelTextoLlano->toPlainText().toStdString().c_str()), ui->panelTextoLlano->toPlainText().toStdString().size() )); ui->panelTextoLlano->setText(hola); QString mandar(strdup(ui->panelTextoLlano->toPlainText().toStdString().c_str())); QString binario=HexToBinary(mandar); ui->panelTextoLlano->setText(binario); } else if(formatoLlano=="bin"){} formatoLlano="bin"; } void MainWindow::on_textoLlanoASCII_clicked() { if(formatoLlano=="hex"){ QString mandar(strdup(ui->panelTextoLlano->toPlainText().toStdString().c_str())); QString binario=HexToAscii(mandar); ui->panelTextoLlano->setText(binario); } if(formatoLlano=="bin"){ QString mandar(strdup(ui->panelTextoLlano->toPlainText().toStdString().c_str())); QString binario=BinaryToHex(mandar); QString ascii=HexToAscii(binario); ui->panelTextoLlano->setText(ascii); } if(formatoLlano=="ascii"){ } formatoLlano="ascii"; } void MainWindow::on_textoCifradoASCII_clicked() { if(formatoCifrado=="hex"){ QString mandar(strdup(ui->panelTextoCifrado->toPlainText().toStdString().c_str())); QString binario=HexToAscii(mandar); ui->panelTextoCifrado->setText(binario); } if(formatoCifrado=="bin"){ QString mandar(strdup(ui->panelTextoCifrado->toPlainText().toStdString().c_str())); QString binario=BinaryToHex(mandar); QString ascii=HexToAscii(binario); ui->panelTextoCifrado->setText(ascii); } if(formatoCifrado=="ascii"){ } formatoCifrado="ascii"; } void MainWindow::on_textoCifradoBIN_clicked() { if(formatoCifrado=="hex"){ QString mandar(strdup(ui->panelTextoCifrado->toPlainText().toStdString().c_str())); QString binario=HexToBinary(mandar); ui->panelTextoCifrado->setText(binario); } else if(formatoCifrado=="ascii"){ //Lo paso a Hexa const char* hola=(toHexRepresentation ( strdup(ui->panelTextoCifrado->toPlainText().toStdString().c_str()), ui->panelTextoCifrado->toPlainText().toStdString().size() )); ui->panelTextoCifrado->setText(hola); QString mandar(strdup(ui->panelTextoCifrado->toPlainText().toStdString().c_str())); QString binario=HexToBinary(mandar); ui->panelTextoCifrado->setText(binario); } else if(formatoCifrado=="bin"){} formatoCifrado="bin"; } void MainWindow::on_textoCifradoHEX_clicked() { if(formatoCifrado=="ascii"){ const char* hola=(toHexRepresentation ( strdup(ui->panelTextoCifrado->toPlainText().toStdString().c_str()), ui->panelTextoCifrado->toPlainText().toStdString().size() )); ui->panelTextoCifrado->setText(hola); } else if(formatoCifrado=="bin"){ QString mandar(strdup(ui->panelTextoCifrado->toPlainText().toStdString().c_str())); QString binario=BinaryToHex(mandar); ui->panelTextoCifrado->setText(binario); } else if(formatoCifrado=="hex"){} formatoCifrado="hex"; } void MainWindow::on_textoKeyASCII_clicked() { if(formatoKey=="hex"){ QString mandar(strdup(ui->panelTextoKey->toPlainText().toStdString().c_str())); QString binario=HexToAscii(mandar); ui->panelTextoKey->setText(binario); } if(formatoKey=="bin"){ QString mandar(strdup(ui->panelTextoKey->toPlainText().toStdString().c_str())); QString binario=BinaryToHex(mandar); QString ascii=HexToAscii(binario); ui->panelTextoKey->setText(ascii); } if(formatoKey=="ascii"){ } formatoKey="ascii"; } void MainWindow::on_textoKeyBIN_clicked() { if(formatoKey=="hex"){ QString mandar(strdup(ui->panelTextoKey->toPlainText().toStdString().c_str())); QString binario=HexToBinary(mandar); ui->panelTextoKey->setText(binario); } else if(formatoKey=="ascii"){ //Lo paso a Hexa const char* hola=(toHexRepresentation ( strdup(ui->panelTextoKey->toPlainText().toStdString().c_str()), ui->panelTextoKey->toPlainText().toStdString().size() )); ui->panelTextoKey->setText(hola); QString mandar(strdup(ui->panelTextoKey->toPlainText().toStdString().c_str())); QString binario=HexToBinary(mandar); ui->panelTextoKey->setText(binario); } else if(formatoKey=="bin"){} formatoKey="bin"; } void MainWindow::on_textoKeyHEX_clicked() { if(formatoKey=="ascii"){ const char* hola=(toHexRepresentation ( strdup(ui->panelTextoKey->toPlainText().toStdString().c_str()), ui->panelTextoKey->toPlainText().toStdString().size() )); ui->panelTextoKey->setText(hola); } else if(formatoKey=="bin"){ QString mandar(strdup(ui->panelTextoKey->toPlainText().toStdString().c_str())); QString binario=BinaryToHex(mandar); ui->panelTextoKey->setText(binario); } else if(formatoKey=="hex"){} formatoKey="hex"; }