void OpcionEncriptFile()
{
char origen[1024];
char salida[1024];
int rotacion;
cout << "Introduce el path del archivo que contiene el texto a encriptar: ";
cin.getline(origen,1023,'\n');
cout << "Introduce el path del archivo de salida: ";
cin.getline(salida,1023,'\n');
cout << "Introduce el desplazamiento: ";
cin >> rotacion;
// Ignore to the end of line
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
switch(CesarEncriptFile(origen,rotacion,salida)){
case 0:
cout << "Cifrado satisfactorio" << endl;
break;
case -1:
cout << "Se encontraron caracteres no validos" << endl;
break;
case -2:
cout << "No se pudo abrir el archivo de origen" << endl;
break;
case -3:
cout << "No se pudo abrir el archivo de destino" << endl;
break;
}
}
void OpcionDecriptFile()
{
char origen[1024];
char salida[1024];
int rotacion;
cout << "Introduce el path del archivo que contiene el texto a desencriptar: ";
cin.getline(origen,1023,'\n');
cout << "Introduce el path del archivo de salida: ";
cin.getline(salida,1023,'\n');
cout << "Introduce el desplazamiento: ";
cin >> rotacion;
// Ignore to the end of line
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
switch(CesarDecriptFile(origen,rotacion,salida)){
case 0:
cout << "Descifrado satisfactorio" << endl;
break;
case -1:
cout << "Se encontraron caracteres no validos" << endl;
break;
case -2:
cout << "No se pudo abrir el archivo de origen" << endl;
break;
case -3:
cout << "No se pudo abrir el archivo de destino" << endl;
break;
}
}
int CesarEncriptFile(char *nameFileIn, int desplazamiento, char *nameFileOut)
{
string final;
ifstream origen;
ofstream salida;
char *cadena;
int i,posInicial,posFinal;
int retval=0;
origen.open(nameFileIn,ios::binary);
if(origen.good()){
origen.seekg(0,ios::end);
int length = origen.tellg();
origen.seekg(0,ios::beg);
cadena = new char[length+1];
salida.open(nameFileOut,ios::binary | ios::trunc);
if(salida.good()){
origen.read(cadena,length);
cadena[length]='\0';
for(i=0;i<length;i++){
posInicial = Letras.find(cadena[i]);
if(posInicial < 0){
retval=-1;
break;
}
posFinal = (Letras.length() + posInicial + desplazamiento) % Letras.length();
final.append(Letras, posFinal, 1);
}
salida.write(final.c_str(),length);
salida.close();
}else{
retval=-3;
}
delete(cadena);
origen.close();
}else{
retval=-2;
}
return retval;
}
//---------------------------------------------------------------------------
int CesarDecriptFile(char *nameFileIn, int desplazamiento, char *nameFileOut)
{
string final;
ifstream origen;
ofstream salida;
char *cadena;
int i,posInicial,posFinal;
int retval=0;
origen.open(nameFileIn,ios::binary);
if(origen.good()){
origen.seekg(0,ios::end);
int length = origen.tellg();
origen.seekg(0,ios::beg);
cadena = new char[length+1];
salida.open(nameFileOut,ios::binary | ios::trunc);
if(salida.good()){
origen.read(cadena,length);
cadena[length]='\0';
for(i=0;i<length;i++){
posInicial = Letras.find(cadena[i]);
if(posInicial < 0){
retval=-1;
break;
}
posFinal = (Letras.length() + posInicial - desplazamiento) % Letras.length();
final.append(Letras, posFinal, 1);
}
salida.write(final.c_str(),length);
salida.close();
}else{
retval=-3;
}
delete(cadena);
origen.close();
}else{
retval=-2;
}
return retval;
}
//---------------------------------------------------------------------------
string CesarEncriptText(string texto, int desplazamiento)
{
int i,posInicial,posFinal;
string final;
for(i=0;i<texto.length();i++){
posInicial = Letras.find(texto.at(i));
if(posInicial < 0){
final="";
break;
}
posFinal = (Letras.length() + posInicial + desplazamiento) % Letras.length();
final.append(Letras, posFinal, 1);
}
return final;
}
//---------------------------------------------------------------------------
string CesarDecriptText(string texto, int desplazamiento)
{
int i,posInicial,posFinal;
string final;
for(i=0;i<texto.length();i++){
posInicial = Letras.find(texto.at(i));
if(posInicial < 0){
final="";
break;
}
posFinal = (Letras.length() + posInicial - desplazamiento) % Letras.length();
final.append(Letras, posFinal, 1);
}
return final;
}
//---------------------------------------------------------------------------