#include<iostream>
#include<iomanip>
#include<fstream>
const int N=26; // cantidad de letras en el alfabeto ingles
using namespace std;
char generar_letra(char *aux_ind, int j);
int main(){
ofstream fout;
ifstream fin;
char *diccionario_cifrado = new char [N];
srand(time(nullptr));
for(int i=0; i<N; i++)
diccionario_cifrado[i] = generar_letra(diccionario_cifrado, i);
fout.open("Diccionario_cifrado", ios::binary);
fout.write(diccionario_cifrado, sizeof diccionario_cifrado[0]*N);
fout.close();
cout<<" -> Diccionario_cifrado guardado con exito\n";
// Eliminando la mayuscula y espacios en blanco para cifrar
fin.open("carta.txt",ios::in);
fout.open("nueva_carta.txt", ios::out);
char aux;
while( fin.get(aux) ){
if(aux=='N')
fout<<'n'; //Excepcion para la primera letra mayuscula
else if(aux!=' ')
fout<<aux;
}
fout.close();
fin.close();
cout<<" -> Eliminando espacios en blanco y guardado como nueva_carta.txt ...\n";
// Cifrando la carta
fin.open("nueva_carta.txt", ios::in);
fout.open("carta_cifrada.txt", ios::out);
while( fin.get(aux) ){
char k = aux-97;
fout<<diccionario_cifrado[k];
}
fout.close();
fin.close();
cout<<" -> Carta cifrada con exito!!!\n";
//Descifrando carta cifrada
fin.open("carta_cifrada.txt", ios::in);
fout.open("carta_descifrada.txt", ios::out);
while( fin.get(aux) ){
char k;
int l=0;
for (int i=0; i<N; i++){
if (diccionario_cifrado[i]==aux)
l=i+97;
}
k=l;
fout<<k;
}
fout.close();
fin.close();
cout<<" -> Carta descifrada con exito!!!\n\n";
cout<<" Todos los archivos fueron creados exitosamente!! :D";
return 0;
}
char generar_letra(char *p, int j){
char k = rand()%26+97;
for(int i=0; i<j; i++){
if(k==p[i])
k = generar_letra(p, j);
}
p[j] = k;
return k;
}
amor
vapdciuexzfkmoqhsywnbljrgt
vmqy
amor
amor