#include <vcl.h>
#pragma hdrstop
#include "Uencripta.h"
void Encriptador::encriptar(string nombre, string clave,TLabel *Estado, TProgressBar *Pro){
int i=0;
int r=0;
long n,m;
char cara;
string aux=nombre;
aux.erase(aux.find('.',0));
aux+=".enc";
string aux1;
aux1.assign(nombre,nombre.find('.',0),4);
int longclave=clave.length();
ifstream leer_ar(nombre.c_str(),ios::in|ios::binary);
//--------
m=leer_ar.tellg();
leer_ar.seekg(0,ios::end);
n=leer_ar.tellg();
leer_ar.seekg(0,ios::beg);
n=n-m;
ofstream escr(aux.c_str(),ios::out|ios::binary);
if(leer_ar.is_open()){
char b;
for (unsigned int i=0;i<aux1.length();i++) {b=aux1[i]^clave[i];
escr.write((char*) &b,sizeof(b));
};
char a;
Estado->Caption="ENCRIPTANDO";
if(escr.is_open()){
while ( leer_ar.read((char*)&cara,sizeof(cara)) )
{ a=(cara ^ clave[i]);
escr.write((char*) &a,sizeof(a));
i = (i+1) % longclave;
r++;
if((r%100)==0){Pro->Position=100.0*r/n;};
}
}else
Estado->Caption="NO SE PUEDE GUARDAR EL ARCHIVO";
}else
Estado->Caption="NO EXISTE EL ARCHIVO";
leer_ar.close();escr.close();
Estado->Caption="Encriptacion terminada";
}
void Encriptador::desencriptar(string nombre, string clave,TLabel *Estado,TProgressBar *Pro){
int i=0;
int r=0;
long n,m;
char cara;
string aux;
string aux1=nombre;
string aux2;
Estado->Caption="DESENCRIPTANDO";
ifstream leer_ar(aux1.c_str(),ios::in|ios::binary);
char a;
char b;
for (int i=0;i<4;i++) {leer_ar.read((char*)&b,sizeof(b));
aux[i]=b^clave[i];
};
int longclave=clave.length();
aux2=nombre.erase(nombre.find('.',0))+aux.c_str();
ofstream escr(aux2.c_str(),ios::out|ios::binary);
m=leer_ar.tellg();
leer_ar.seekg(0,ios::end);
n=leer_ar.tellg();
leer_ar.seekg(4,ios::beg);
n=n-m;
if(leer_ar.is_open()){
if(escr.is_open()){
while (leer_ar.read((char*)&cara,sizeof(cara)) )
{ a=(cara ^ clave[i]);
escr.write((char*) &a,sizeof(a));
i = (i+1) % longclave;
r++;
if((r%100)==0){Pro->Position=100.0*r/n;};
};
}else
Estado->Caption="NO SE PUEDE GUARDAR EL ARCHIVO";
}else
Estado->Caption="NO EXISTE EL ARCHIVO";
leer_ar.close();escr.close();
Estado->Caption="Desencriptacion terminada";
}
#pragma package(smart_init)