El cifrado en criptografía es un proceso mediante el cual un texto sin formato o una parte de la información se convierte en texto cifrado o en un texto que solo puede ser descifrado por el receptor al que estaba destinada la información. El algoritmo que se utiliza para el proceso de cifrado se conoce como cifrado . Ayuda a proteger la información del consumidor, los correos electrónicos y otros datos confidenciales del acceso no autorizado y protege las redes de comunicación. Actualmente hay muchas opciones para elegir y encontrar el algoritmo más seguro que cumpla con nuestros requisitos.
Descifrado: el descifrado es el proceso de convertir un mensaje sin sentido (texto cifrado) en su forma original (texto sin formato). Funciona aplicando el algoritmo de conversión opuesto al que se utiliza para cifrar los datos. Se requiere la misma clave para descifrar la información a su forma normal.
Tipos de Criptografía: Hay dos tipos de criptografía:
- Criptografía simétrica: es un sistema de cifrado en el que el remitente y el receptor de un mensaje utilizan una única clave común para cifrar y descifrar los mensajes. Los sistemas de clave simétrica son más rápidos y sencillos, pero el remitente y el receptor tienen que intercambiar claves de forma segura. El sistema criptográfico de clave simétrica más popular es el Sistema de cifrado de datos (DES).
- Criptografía asimétrica: bajo este sistema, se utiliza un par de claves para cifrar y descifrar información. Se utiliza una clave pública para el cifrado y una clave privada para el descifrado. La clave pública y la clave privada son diferentes. Incluso si todos conocen la clave pública, el receptor previsto solo puede decodificarla porque solo él conoce la clave privada.
En este artículo, se utiliza criptografía simétrica para cifrar y descifrar datos.
Enfoque: analicemos el enfoque en detalle antes de pasar a la parte de implementación:
- Una clase encdec se define con dos funciones miembro: encrypt() y decrypt(). El nombre del archivo a cifrar es la variable miembro de la clase.
- La función encrypt() se usa para manejar el cifrado del archivo de entrada. El código de manejo de archivos se incluye en la función encrypt() para leer el archivo y escribir en él. Se genera un nuevo archivo cifrado llamado encrypt.txt con todos los datos cifrados. El archivo encriptado se encripta usando una clave que ingresa el usuario.
- La función decrypt() se usa para leer el archivo cifrado y descifrar los datos y generar un nuevo archivo decrypt.txt. Para descifrar un archivo, se solicita una clave al usuario. Si se ingresa la clave correcta, el archivo se descifra con éxito.
- El flujo de entrada fin se usa para leer del archivo y el flujo de salida fout se usa para escribir en el archivo.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> #include <fstream> using namespace std; // encdec class with encrypt() and // decrypt() member functions class encdec { int key; // File name to be encrypt string file = "geeksforgeeks.txt"; char c; public: void encrypt(); void decrypt(); }; // Definition of encryption function void encdec::encrypt() { // Key to be used for encryption cout << "key: "; cin >> key; // Input stream fstream fin, fout; // Open input file // ios::binary- reading file // character by character fin.open(file, fstream::in); fout.open("encrypt.txt", fstream::out); // Reading original file till // end of file while (fin >> noskipws >> c) { int temp = (c + key); // Write temp as char in // output file fout << (char)temp; } // Closing both files fin.close(); fout.close(); } // Definition of decryption function void encdec::decrypt() { cout << "key: "; cin >> key; fstream fin; fstream fout; fin.open("encrypt.txt", fstream::in); fout.open("decrypt.txt", fstream::out); while (fin >> noskipws >> c) { // Remove the key from the // character int temp = (c - key); fout << (char)temp; } fin.close(); fout.close(); } // Driver Code int main() { encdec enc; char c; cout << "\n"; cout << "Enter Your Choice : -> \n"; cout << "1. encrypt \n"; cout << "2. decrypt \n"; cin >> c; cin.ignore(); switch (c) { case '1': { enc.encrypt(); break; } case '2': { enc.decrypt(); break; } } }
Producción:
Publicación traducida automáticamente
Artículo escrito por baljeet11801868 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA