[99b8c3f] | 1 | /*! |
---|
| 2 | Interfaz de criptosistema Desarrollada en Qt |
---|
| 3 | @author Ing. Leonel P. Hernandez M (lhernandez at cenditel.gob.ve) |
---|
| 4 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 5 | @date 30/06/2016 |
---|
| 6 | @version 1.0.0 |
---|
| 7 | */ |
---|
[25a5325] | 8 | #include "criptosistemas.h" |
---|
| 9 | #include "ui_criptosistemas.h" |
---|
| 10 | #include <QMessageBox> |
---|
| 11 | #include<QProgressDialog> |
---|
| 12 | |
---|
| 13 | #include <QTime> |
---|
| 14 | #include <QHash> |
---|
| 15 | #include <QCryptographicHash> |
---|
| 16 | #include <QFile> |
---|
| 17 | #include <QFileDialog> |
---|
| 18 | #include <QTextStream> |
---|
| 19 | #include <QDateTime> |
---|
| 20 | #include <QDebug> |
---|
| 21 | #include <iostream> |
---|
| 22 | #include <ctime> |
---|
| 23 | #include "polynomial.h" |
---|
| 24 | #include "executionresult.h" |
---|
| 25 | #include <crypto++/rsa.h> |
---|
| 26 | #include <crypto++/osrng.h> |
---|
| 27 | #include <crypto++/base64.h> |
---|
| 28 | #include <crypto++/files.h> |
---|
| 29 | #include <crypto++/salsa.h> |
---|
| 30 | |
---|
| 31 | const int iterations = 20; |
---|
| 32 | |
---|
| 33 | using namespace std; |
---|
| 34 | using namespace pol; |
---|
| 35 | using namespace CryptoPP; |
---|
[bd66191] | 36 | QString dir; |
---|
[25a5325] | 37 | |
---|
| 38 | CriptoSistemas::CriptoSistemas(QWidget *parent) : |
---|
| 39 | QMainWindow(parent), |
---|
| 40 | ui(new Ui::CriptoSistemas) |
---|
| 41 | { |
---|
| 42 | ui->setupUi(this); |
---|
| 43 | QFile ruta_priv; |
---|
| 44 | QFile ruta_publ; |
---|
[39ca4d5] | 45 | if ( ruta_priv.exists("/usr/share/criptosistema/keys/privkey.txt") && ruta_publ.exists("/usr/share/criptosistema/keys/pubkey.txt")) |
---|
[25a5325] | 46 | { |
---|
| 47 | ui->generarLlaves->setEnabled(false); |
---|
| 48 | ui->cifrar->setEnabled(true); |
---|
| 49 | ui->decifrar->setEnabled(true); |
---|
| 50 | connect(ui->cifrar,SIGNAL(clicked()),this,SLOT(CifrarArchivo())); |
---|
[bd66191] | 51 | connect(ui->decifrar, SIGNAL(clicked()), this, SLOT(DescifrarArchivo())); |
---|
[99b8c3f] | 52 | connect(ui->ayuda,SIGNAL(clicked()),this,SLOT(Ayuda())); |
---|
[25a5325] | 53 | ui->progressBar->setVisible(false); |
---|
| 54 | } |
---|
[99b8c3f] | 55 | else |
---|
| 56 | { |
---|
[25a5325] | 57 | connect(ui->generarLlaves,SIGNAL(clicked()),this,SLOT(OpcionLlaves())); |
---|
[99b8c3f] | 58 | connect(ui->ayuda,SIGNAL(clicked()),this,SLOT(Ayuda())); |
---|
[25a5325] | 59 | ui->progressBar->setVisible(false); |
---|
| 60 | } |
---|
| 61 | } |
---|
| 62 | |
---|
| 63 | |
---|
| 64 | CriptoSistemas::~CriptoSistemas() |
---|
| 65 | { |
---|
| 66 | delete ui; |
---|
| 67 | } |
---|
| 68 | |
---|
| 69 | |
---|
[99b8c3f] | 70 | /*! |
---|
| 71 | Funcion que despliega una pregunta para crear las llaves (privada y publica) |
---|
| 72 | @author Ing. Leonel P. Hernandez M (lhernandez at cenditel.gob.ve) |
---|
| 73 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 74 | @date 30/06/2016 |
---|
| 75 | @version 1.0.0 |
---|
| 76 | */ |
---|
[25a5325] | 77 | void CriptoSistemas::OpcionLlaves() |
---|
| 78 | { |
---|
| 79 | QPushButton *pushSi = new QPushButton("&Si", this); |
---|
| 80 | QPushButton *pushNo = new QPushButton("&No", this); |
---|
| 81 | |
---|
| 82 | QString generar_llaves = "<html><head/><body><p ><img src=':/static/cenditel.png' width='110' height='80' style='float: left;'/></p><p align='center'><span style= 'font-size:16pt; font-weight:600; font-style:italic; color:#ff0000;'>Generar Llaves</span></p></body></html>"; |
---|
| 83 | ui->titulo->setText(generar_llaves); |
---|
| 84 | QString pregunta = "<html><head/><body><p align='center'><span style= 'font-size:16pt; color:#2589eb;'>¿Deseas Generar las llave privada y publica?</span></p><p align='center'><img src=':/static/llaves.png'/></p></body></html>"; |
---|
| 85 | ui->imgCentral->setText(pregunta); |
---|
| 86 | pushSi->setGeometry(QRect(233, 394, 80, 31)); |
---|
| 87 | pushNo->setGeometry(QRect(518, 394, 80, 31)); |
---|
| 88 | ui->centralPage->addWidget(ui->imgCentral, 0,2); |
---|
| 89 | ui->centralPage->addWidget(pushSi, 1,1); |
---|
| 90 | ui->centralPage->addWidget(pushNo, 1,3); |
---|
| 91 | connect(pushSi,SIGNAL(clicked()),this,SLOT(GenerarLlaves())); |
---|
| 92 | connect(pushNo,SIGNAL(clicked()),this,SLOT(Inicio())); |
---|
[99b8c3f] | 93 | connect(ui->cifrar,SIGNAL(clicked()),this,SLOT(CifrarArchivo())); |
---|
| 94 | connect(ui->decifrar, SIGNAL(clicked()), this, SLOT(DescifrarArchivo())); |
---|
[25a5325] | 95 | pushSi->setObjectName("si"); |
---|
| 96 | pushNo->setObjectName("no"); |
---|
| 97 | } |
---|
| 98 | |
---|
| 99 | |
---|
| 100 | void CriptoSistemas::Inicio() |
---|
| 101 | { |
---|
| 102 | |
---|
| 103 | } |
---|
| 104 | |
---|
[99b8c3f] | 105 | |
---|
| 106 | /*! |
---|
| 107 | Funcion que permite generar las llaves(privada y publica) |
---|
| 108 | @author Ing. Leonel P. Hernandez M (lhernandez at cenditel.gob.ve) |
---|
| 109 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 110 | @date 30/06/2016 |
---|
| 111 | @version 1.0.0 |
---|
| 112 | */ |
---|
[25a5325] | 113 | void CriptoSistemas::GenerarLlaves() |
---|
| 114 | { |
---|
| 115 | QFile ruta_priv; |
---|
| 116 | QFile ruta_publ; |
---|
| 117 | QPushButton *pushSi = findChild<QPushButton*>("si"); |
---|
| 118 | pushSi->setVisible(false); |
---|
| 119 | QPushButton *pushNo = findChild<QPushButton*>("no"); |
---|
| 120 | pushNo->setVisible(false); |
---|
| 121 | QPushButton *pushCifrar = new QPushButton("&Cifrar", this); |
---|
| 122 | QPushButton *pushDescifrar = new QPushButton("&Descifrar", this); |
---|
| 123 | pushCifrar->setObjectName("cifra"); |
---|
| 124 | pushDescifrar->setObjectName("descifrar"); |
---|
| 125 | QString exito = "<html><head/><body><p align='center'><span style= 'font-size:16pt; color:#2589eb;'>Éxito al generar las claves, ahora puedes cifrar o descifrar un archivo</span></p><p align='center'><img src=':/static/llaves.png'/></p></body></html>"; |
---|
[39ca4d5] | 126 | if ( ruta_priv.exists("/usr/share/criptosistema/keys/privkey.txt") && ruta_publ.exists("/usr/share/criptosistema/keys/pubkey.txt")) |
---|
[25a5325] | 127 | { |
---|
| 128 | |
---|
| 129 | QMessageBox::information(this,"Informacion","Las llaves existen, las puedes usar para cifrar o descifrar un archivo!!!"); |
---|
| 130 | ui->generarLlaves->setEnabled(false); |
---|
| 131 | ui->cifrar->setEnabled(true); |
---|
| 132 | ui->decifrar->setEnabled(true); |
---|
| 133 | ui->imgCentral->setText(exito); |
---|
| 134 | ui->centralPage->addWidget(ui->imgCentral, 0,2); |
---|
| 135 | ui->centralPage->addWidget(pushCifrar, 1,1); |
---|
| 136 | ui->centralPage->addWidget(pushDescifrar, 1,3); |
---|
| 137 | } |
---|
| 138 | else |
---|
| 139 | { |
---|
| 140 | QMessageBox::information(this,"Alerta","Generando la clave......!!!"); |
---|
| 141 | pol_t kx = get_rand_pol(KEY_DEG, false); |
---|
| 142 | pol_t ky = get_rand_pol(KEY_DEG, false); |
---|
| 143 | pol3v_t D = get_open_key(kx, ky); |
---|
| 144 | AutoSeededRandomPool rng; |
---|
| 145 | InvertibleRSAFunction privkey; |
---|
[99b8c3f] | 146 | privkey.GenerateRandomWithKeySize(rng, 3072); |
---|
[39ca4d5] | 147 | Base64Encoder privkeysink(new FileSink("/usr/share/criptosistema/keys/privkey.txt")); |
---|
[25a5325] | 148 | privkey.DEREncode(privkeysink); |
---|
| 149 | privkeysink.MessageEnd(); |
---|
| 150 | RSAFunction pubkey(privkey); |
---|
[39ca4d5] | 151 | Base64Encoder pubkeysink(new FileSink("/usr/share/criptosistema/keys/pubkey.txt")); |
---|
[25a5325] | 152 | pubkey.DEREncode(pubkeysink); |
---|
| 153 | pubkeysink.MessageEnd(); |
---|
| 154 | ui->generarLlaves->setEnabled(false); |
---|
| 155 | ui->cifrar->setEnabled(true); |
---|
| 156 | ui->decifrar->setEnabled(true); |
---|
| 157 | QMessageBox::information(this,"Exito","Las llaves se crearon, las puedes usar para cifrar o descifrar un archivo!!!"); |
---|
| 158 | ui->imgCentral->setText(exito); |
---|
| 159 | ui->centralPage->addWidget(ui->imgCentral, 0,2); |
---|
| 160 | ui->centralPage->addWidget(pushCifrar, 1,1); |
---|
| 161 | ui->centralPage->addWidget(pushDescifrar, 1,3); |
---|
| 162 | } |
---|
| 163 | connect(pushCifrar,SIGNAL(clicked()),this,SLOT(CifrarArchivo())); |
---|
| 164 | connect(pushDescifrar,SIGNAL(clicked()),this,SLOT(DescifrarArchivo())); |
---|
| 165 | } |
---|
| 166 | |
---|
| 167 | |
---|
[99b8c3f] | 168 | /*! |
---|
| 169 | Funcion que muestra la carga del archivo que desea cifrar |
---|
| 170 | @author Ing. Leonel P. Hernandez M (lhernandez at cenditel.gob.ve) |
---|
| 171 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 172 | @date 15/08/2016 |
---|
| 173 | @version 1.0.0 |
---|
| 174 | */ |
---|
[25a5325] | 175 | void CriptoSistemas::CifrarArchivo() |
---|
| 176 | { |
---|
| 177 | QPushButton *pushSeleccionar = new QPushButton("&Seleccionar Archivo ...", this); |
---|
| 178 | QPushButton *pushDescargar = new QPushButton("&Descargar en ...", this); |
---|
| 179 | QString cifrando = "<html><head/><body><p ><img src=':/static/cenditel.png' width='110' height='80' style='float: left;'/></p><p align='center'><span style= 'font-size:16pt; font-weight:600; font-style:italic; color:#ff0000;'>Cifrar Archivo</span></p></body></html>"; |
---|
| 180 | ui->titulo->setText(cifrando); |
---|
| 181 | QString img = "<html><head/><body><p align='center'><p align='center'><img src=':/static/cifrar.png'/></p></body></html>"; |
---|
| 182 | ui->imgCentral->setText(img); |
---|
| 183 | QPushButton *pushcifrar = findChild<QPushButton*>("cifra"); |
---|
| 184 | QPushButton *pushDescifrar = findChild<QPushButton*>("descifrar"); |
---|
| 185 | if(pushcifrar && pushDescifrar){ |
---|
| 186 | pushcifrar->setVisible(false); |
---|
| 187 | pushDescifrar->setVisible(false); |
---|
| 188 | } |
---|
| 189 | ui->centralPage->addWidget(ui->imgCentral, 0,2); |
---|
| 190 | ui->centralPage->addWidget(pushSeleccionar, 0,1); |
---|
| 191 | ui->centralPage->addWidget(pushDescargar, 2,2); |
---|
[bd66191] | 192 | pushDescargar->setObjectName("pushDescargar"); |
---|
[99b8c3f] | 193 | pushSeleccionar->setObjectName("pushSeleccionar1"); |
---|
[25a5325] | 194 | |
---|
[bd66191] | 195 | connect(pushSeleccionar, &QPushButton::clicked,[=] { |
---|
| 196 | emit OpenFolderForCrifrar(); |
---|
| 197 | }); |
---|
[99b8c3f] | 198 | connect(pushDescargar, SIGNAL(clicked()), this, SLOT(SaveFile())); |
---|
[bd66191] | 199 | |
---|
| 200 | } |
---|
| 201 | |
---|
[99b8c3f] | 202 | |
---|
| 203 | /*! |
---|
| 204 | Funcion permite montar un archivo para cifrar |
---|
| 205 | @author Ing. Leonel P. Hernandez M (lhernandez at cenditel.gob.ve) |
---|
| 206 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 207 | @date 26/09/2016 |
---|
| 208 | @version 1.0.0 |
---|
| 209 | */ |
---|
[bd66191] | 210 | void CriptoSistemas::OpenFolderForCrifrar() |
---|
| 211 | { |
---|
[99b8c3f] | 212 | dir = QFileDialog::getOpenFileName(this,tr("Selleccione Archivo"),"/home",tr("Archivos (*.txt);;Todos los Archivos(*.*)")); |
---|
| 213 | string ruta = dir.toStdString(); |
---|
| 214 | QFile archivo(ruta.c_str()); |
---|
| 215 | int size = archivo.size(); |
---|
| 216 | if (size > 256) |
---|
| 217 | { |
---|
| 218 | QString style = "QLabel{ background-color: #FCDFDF; font-size: 13px; font-style: italic; margin-left: 10px; }"; |
---|
| 219 | this->ui->flujo_mensajes->setText("El archivo que desea Cifrar debe tener un tamaño maximo de 256 Bytes, vuelve a seleccionar un archivo."); |
---|
| 220 | ui->flujo_mensajes->setStyleSheet(style); |
---|
| 221 | dir = ""; |
---|
| 222 | } |
---|
[bd66191] | 223 | } |
---|
[25a5325] | 224 | |
---|
[99b8c3f] | 225 | |
---|
| 226 | /*! |
---|
| 227 | Funcion que permite guardar en una ruta dada el txt cifrado |
---|
| 228 | @author Ing. Leonel P. Hernandez M (lhernandez at cenditel.gob.ve) |
---|
| 229 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 230 | @date 26/09/2016 |
---|
| 231 | @version 1.0.0 |
---|
| 232 | */ |
---|
[bd66191] | 233 | void CriptoSistemas::SaveFile() |
---|
| 234 | { |
---|
| 235 | string ruta = dir.toStdString(); |
---|
[99b8c3f] | 236 | QFile archivo(ruta.c_str()); |
---|
| 237 | int size = archivo.size(); |
---|
| 238 | if (dir.size() > 0 && size <= 256) |
---|
| 239 | { |
---|
| 240 | QString dir_save = QFileDialog::getSaveFileName(0,"Save file",QDir::currentPath(), |
---|
| 241 | "Text files (*.txt)", |
---|
| 242 | new QString("Text files (*.txt)")); |
---|
| 243 | |
---|
| 244 | |
---|
| 245 | if (size <= 256) |
---|
| 246 | { |
---|
| 247 | string plain; |
---|
| 248 | string save = dir_save.toStdString(); |
---|
| 249 | FileSource texto_plano(ruta.c_str(), true, new StringSink(plain)); |
---|
[39ca4d5] | 250 | FileSource file("/usr/share/criptosistema/keys/pubkey.txt", true, new Base64Decoder); |
---|
[99b8c3f] | 251 | // Cifrado |
---|
| 252 | RSAES_OAEP_SHA_Encryptor pubkey(file); |
---|
| 253 | AutoSeededRandomPool rng; |
---|
| 254 | StringSource ss1( plain, true, |
---|
| 255 | new PK_EncryptorFilter( rng, pubkey, |
---|
| 256 | new FileSink( save.c_str() ) |
---|
| 257 | ) // PK_EncryptorFilter |
---|
| 258 | ); // StringSource |
---|
| 259 | QString style = "QLabel{ background-color: #5CB85C; font-size: 13px; font-style: italic; margin-left: 10px; }"; |
---|
| 260 | this->ui->flujo_mensajes->setText("El archivo se Cifro con exito, se encuentra en la ruta " + dir_save); |
---|
| 261 | ui->flujo_mensajes->setStyleSheet(style); |
---|
| 262 | dir = ""; |
---|
| 263 | } |
---|
| 264 | else |
---|
| 265 | { |
---|
| 266 | QString style = "QLabel{ background-color: #FCDFDF; font-size: 13px; font-style: italic; margin-left: 10px; }"; |
---|
| 267 | this->ui->flujo_mensajes->setText("El archivo que desea Cifrar debe tener un tamaño maximo de 256 Bytes, vuelve a seleccionar un archivo."); |
---|
| 268 | ui->flujo_mensajes->setStyleSheet(style); |
---|
| 269 | dir = ""; |
---|
| 270 | } |
---|
| 271 | } |
---|
| 272 | else |
---|
| 273 | { |
---|
| 274 | QString style = "QLabel{ background-color: #FCDFDF; font-size: 13px; font-style: italic; margin-left: 10px; }"; |
---|
| 275 | this->ui->flujo_mensajes->setText("Error, Debes seleccionar un archivo para cifrar"); |
---|
| 276 | ui->flujo_mensajes->setStyleSheet(style); |
---|
| 277 | } |
---|
[bd66191] | 278 | } |
---|
| 279 | |
---|
[99b8c3f] | 280 | |
---|
| 281 | /*! |
---|
| 282 | Funcion que muestra el formulario para la carga del archivo que desea Decifrar |
---|
| 283 | @author Ing. Leonel P. Hernandez M (lhernandez at cenditel.gob.ve) |
---|
| 284 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 285 | @date 26/09/2016 |
---|
| 286 | @version 1.0.0 |
---|
| 287 | */ |
---|
[bd66191] | 288 | void CriptoSistemas::DescifrarArchivo() |
---|
| 289 | { |
---|
| 290 | QPushButton *pushSeleccionar = new QPushButton("&Seleccionar Archivo ...", this); |
---|
| 291 | QPushButton *pushDescargar = new QPushButton("&Descifrar en ...", this); |
---|
| 292 | QString cifrando = "<html><head/><body><p><img src=':/static/cenditel.png' width='110' height='80' style='float: left;'/></p><p align='center'><span style= 'font-size:16pt; font-weight:600; font-style:italic; color:#ff0000;'>Decifrar Archivo</span></p></body></html>"; |
---|
| 293 | ui->titulo->setText(cifrando); |
---|
| 294 | QString img = "<html><head/><body><p align='center'><p align='center'><img src=':/static/descifrar.png'/></p></body></html>"; |
---|
| 295 | ui->imgCentral->setText(img); |
---|
| 296 | QPushButton *pushcifrar = findChild<QPushButton*>("cifra"); |
---|
| 297 | QPushButton *pushDescifrar = findChild<QPushButton*>("descifrar"); |
---|
| 298 | if(pushcifrar && pushDescifrar){ |
---|
| 299 | pushcifrar->setVisible(false); |
---|
| 300 | pushDescifrar->setVisible(false); |
---|
| 301 | } |
---|
| 302 | ui->centralPage->addWidget(ui->imgCentral, 0,2); |
---|
| 303 | ui->centralPage->addWidget(pushSeleccionar, 0,1); |
---|
| 304 | ui->centralPage->addWidget(pushDescargar, 2,2); |
---|
| 305 | pushDescargar->setObjectName("pushDescargarEn"); |
---|
[99b8c3f] | 306 | pushSeleccionar->setObjectName("pushSeleccionar"); |
---|
[bd66191] | 307 | connect(pushSeleccionar, SIGNAL(clicked()), this, SLOT(OpenFolderForDescifrar())); |
---|
[99b8c3f] | 308 | connect(pushDescargar, SIGNAL(clicked()), this, SLOT(SaveFileForDescifrado())); |
---|
[25a5325] | 309 | } |
---|
| 310 | |
---|
[bd66191] | 311 | |
---|
[99b8c3f] | 312 | /*! |
---|
| 313 | Funcion permite montar un archivo el cual sera Decifrado |
---|
| 314 | @author Ing. Leonel P. Hernandez M (lhernandez at cenditel.gob.ve) |
---|
| 315 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 316 | @date 26/09/2016 |
---|
| 317 | @version 1.0.0 |
---|
| 318 | */ |
---|
[bd66191] | 319 | void CriptoSistemas::OpenFolderForDescifrar() |
---|
[25a5325] | 320 | { |
---|
[99b8c3f] | 321 | dir = QFileDialog::getOpenFileName(this,tr("Selleccione Archivo"),"/home",tr("Archivos (*.txt);;Todos los Archivos(*.*)")); |
---|
[bd66191] | 322 | QPushButton *pushDescarga = findChild<QPushButton*>("pushDescargar"); |
---|
| 323 | if (pushDescarga) |
---|
| 324 | { |
---|
| 325 | pushDescarga->setVisible(false); |
---|
| 326 | } |
---|
| 327 | } |
---|
[25a5325] | 328 | |
---|
[bd66191] | 329 | |
---|
[99b8c3f] | 330 | /*! |
---|
| 331 | Funcion que permite guardar en una ruta dada el txt Decifrado |
---|
| 332 | @author Ing. Leonel P. Hernandez M (lhernandez at cenditel.gob.ve) |
---|
| 333 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 334 | @date 26/09/2016 |
---|
| 335 | @version 1.0.0 |
---|
| 336 | */ |
---|
[bd66191] | 337 | void CriptoSistemas::SaveFileForDescifrado() |
---|
| 338 | { |
---|
[99b8c3f] | 339 | if (dir.size() > 0 ) |
---|
| 340 | { |
---|
| 341 | QString dir_save = QFileDialog::getSaveFileName(0,"Save file",QDir::currentPath(), |
---|
| 342 | "Text files (*.txt)", |
---|
| 343 | new QString("Text files (*.txt)")); |
---|
| 344 | // Descifrado |
---|
| 345 | AutoSeededRandomPool rng; |
---|
| 346 | string str; |
---|
| 347 | string ruta = dir.toStdString(); |
---|
| 348 | string save = dir_save.toStdString(); |
---|
[39ca4d5] | 349 | FileSource file("/usr/share/criptosistema/keys/privkey.txt", true, new Base64Decoder); |
---|
[99b8c3f] | 350 | FileSource cifrado(ruta.c_str(), true, new StringSink(str)); |
---|
| 351 | RSAES_OAEP_SHA_Decryptor d(file); |
---|
| 352 | |
---|
| 353 | StringSource ss2(str, true, |
---|
| 354 | new PK_DecryptorFilter(rng, d, |
---|
| 355 | new FileSink( save.c_str() ) |
---|
| 356 | ) // PK_DecryptorFilter |
---|
| 357 | ); // StringSource |
---|
| 358 | QString style = "QLabel{ background-color: #5CB85C; font-size: 13px; font-style: italic; margin-left: 10px; }"; |
---|
| 359 | this->ui->flujo_mensajes->setText("El archivo se DesCifro con exito, el archivo se encuentra en la siguiente ruta: " + dir_save); |
---|
| 360 | ui->flujo_mensajes->setStyleSheet(style); |
---|
| 361 | dir = ""; |
---|
| 362 | } |
---|
| 363 | else |
---|
| 364 | { |
---|
| 365 | QString style = "QLabel{ background-color: #FCDFDF; font-size: 13px; font-style: italic; margin-left: 10px; }"; |
---|
| 366 | this->ui->flujo_mensajes->setText("Debes seleccionar un archivo para Decifrar"); |
---|
| 367 | ui->flujo_mensajes->setStyleSheet(style); |
---|
| 368 | } |
---|
| 369 | } |
---|
| 370 | |
---|
| 371 | |
---|
| 372 | /*! |
---|
| 373 | Funcion para mostrar la Ayuda del sistema |
---|
| 374 | @author Ing. Leonel P. Hernandez M (lhernandez at cenditel.gob.ve) |
---|
| 375 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
| 376 | @date 26/09/2016 |
---|
| 377 | @version 1.0.0 |
---|
| 378 | */ |
---|
| 379 | void CriptoSistemas::Ayuda() |
---|
| 380 | { |
---|
| 381 | QPushButton *pushSeleccionar = findChild<QPushButton*>("pushSeleccionar"); |
---|
| 382 | QPushButton *pushSelecciona = findChild<QPushButton*>("pushSeleccionar1"); |
---|
| 383 | QPushButton *pushDescargar = findChild<QPushButton*>("pushDescargarEn"); |
---|
| 384 | QPushButton *pushDescarga = findChild<QPushButton*>("pushDescargar"); |
---|
[39ca4d5] | 385 | QPushButton *pushSi = findChild<QPushButton*>("si"); |
---|
| 386 | QPushButton *pushNo = findChild<QPushButton*>("no"); |
---|
| 387 | QPushButton *pushcifrar = findChild<QPushButton*>("cifra"); |
---|
| 388 | QPushButton *pushDescifrar = findChild<QPushButton*>("descifrar"); |
---|
| 389 | if(pushcifrar && pushDescifrar){ |
---|
| 390 | delete pushcifrar; |
---|
| 391 | delete pushDescifrar; |
---|
| 392 | } |
---|
| 393 | if (pushSi) |
---|
| 394 | { |
---|
| 395 | delete pushSi; |
---|
| 396 | } |
---|
| 397 | if (pushNo) |
---|
| 398 | { |
---|
| 399 | delete pushNo; |
---|
| 400 | } |
---|
[99b8c3f] | 401 | if (pushDescargar) |
---|
| 402 | { |
---|
| 403 | delete pushDescargar; |
---|
| 404 | } |
---|
| 405 | if (pushDescarga) |
---|
| 406 | { |
---|
| 407 | delete pushDescarga; |
---|
| 408 | } |
---|
| 409 | if (pushSeleccionar) |
---|
| 410 | { |
---|
| 411 | delete pushSeleccionar; |
---|
| 412 | } |
---|
| 413 | if (pushSelecciona) |
---|
| 414 | { |
---|
| 415 | delete pushSelecciona; |
---|
| 416 | } |
---|
| 417 | QString bienvenida = "<html><head/><body><p><img src=':/static/cenditel.png' width='110' height='80' style='float: left;'/></p><p align='center'><span style= 'font-size:16pt; font-weight:600; font-style:italic; color:#ff0000;'>Bienvenido</span></p></body></html>"; |
---|
| 418 | ui->titulo->setText(bienvenida); |
---|
| 419 | QString ayuda = "<html><head/><body><p align='justify'><p align='justify'>Una de las herramientas principales para proveer seguridad a la información cuando</p><p align='justify'>se transmite por un canal abierto es la criptografía. La criptografía es una rama</p><p align='justify'>de la matemática que permite transformar la información de manera que su lectura</p><p align='justify'>sea muy difícil si no se posee una clave criptográfica. Es de particular interés,</p><p align='justify'>entonces, para este Centro de Desarrollo e Investigación en Tecnologías Libres-</p><p align='justify'>CENDITEL, dedica parte de su potencial investigativo a estudiar los diferentes </p><p align='justify'>sistemas criptográficos (criptosistemas) existentes, proponer mejoras a los mismos </p><p align='justify'>o incluso, desarrollar soberanamente propuestas alternativas a los ya conocidos.</p><p align='justify'>Es por ello que desde CENDITEL nos hemos propuesto el estudio de un </p><p align='justify'>criptosistema novedoso que puede dar seguridad incluso en un computador cuántico, </p><p align='justify'>si llegare a ser construido. Este estudio se llama Criptosistema de variedad </p><p align='justify'>algebraica, su seguridad se basa en un problema matemático del área de geometría</p><p align='justify'>permitiría ser seguro en el mencionado computador cuántico además de poder ser </p><p align='justify'>utilizado en un computador clásico .</p></p></body></html>"; |
---|
| 420 | ui->imgCentral->setText(ayuda); |
---|
| 421 | ui->centralPage->addWidget(ui->imgCentral, 0,1); |
---|
| 422 | |
---|
[25a5325] | 423 | } |
---|