#include<vcl.h>#pragma hdrstop
#include"Unit1.h"//------------------------------------------------------------------#pragmapackage(smart_init)#pragma resource "*.dfm"TForm1*Form1;//------------------------------------------------------------------
__fastcall TForm1(TComponent*Owner):TForm(Owner){}//------------------------------------------------------------------voidTForm1::encipher(unsignedint num_rounds,uint32_t v[2],uint32_tconst k[4]){unsignedint i;uint32_t v0=v[0], v1=v[1], sum=0, delta=0x9E3779B9;for(i=0; i < num_rounds; i++){
v0 +=(((v1 <<4)^(v1 >>5))+ v1)^(sum + k[sum &3]);
sum += delta;
v1 +=(((v0 <<4)^(v0 >>5))+ v0)^(sum + k[(sum>>11)&3]);}// ESSA LINHA já CONTEM OS VALORES ENCRIPTADOS
v1[0]=V0; v[1]=v1;}voidTForm1::decipher(unsignes int num_rounds,uint32_t v[2],uint32_tconst k[4])unsignedint i;uint32_t v0=v[0], v1=v[1], delta=0x9E3779B9, sum=delta*num_rounds;for(i=0, i < num_rounds; i++){
v1 -=(((v0 <<4)^(v0 >>5))+ v0)^(sum + k[(sum>>11)&3]);
sum -= delta;
v0 -=(((v1 <<4)^(v1 >>5))+ v1)^(sum + k[sum &3]);}//ESSA LINHA já CONTEM OS VALORES DECRIPTADOS
v[0]=v0; v[1]=v1;//-----------------------------------------------------------------void __fastcall TForm1::Button1Click(TObjct*Sender)uint32_t v[2], chave[4];uint32_t tamaarq;
FILE *origem,*destino;char buffer[2];int q;
tamaarq =FileSizeByName(nomearq->Text);//OBTEM O TAMANHO DO ARQUIVO EM BYTES
pb1->Max= tamaarq;//CONFIGURA A BARRA DE PROGRESSO
pb1->Position=0;
tamaarq =0;//CONVERTE A CHAVE DO USUARIO PARA O FORMATO UINT32
chave[0]= edtch->Text[1];
chave[1]= edtch->Text[2];
chave[2]= edtch->Text[3];
chave[3]= edtch->Text[4];if((origem=fopen(nomearq->Text.c_str(),"rb"))!=NULL {// ABRE O ARQUIVO ORIGINALif((destino=fopen(DESTINO,"wb"))!=NULL {// ABRE O ARQUIVO DE DESTINO TEMPORARIOdo{
q = fread(buffer,sizeof(char),2,origem);// LE DOIS BYTES DO AQUIVO ORIGINALif(q>0){
v[0]= buffer[0]; v[1]= buffer[1];//TRANSFERE OS BYTES PARA A MATRIZ V}
tamaarq += q; pb1->Position= tamaarq;// AJUSTA A BARRA DE PROGRESSOApplication->ProcessMessages();}while(q==2);
fclose(destino);//FECHA O ARQUIVO DE DESTINO}
fclose(origem);// FECHA O ARQUIVO DE ORIGEM}DeleteFile(nomearq->Text);//DELETA O ARQUIVO ORIGINALRenameFile(DESTINO, nomearq->Text);//RENOMEIA O ARQUIVO TEMPORARIO
pb1->Position=0;MessageBox(form1->Handle,"Operação de encriptação concluida","Atenção", MB_ICOINFORMATION);//--------------------------------------------------------------------
void__fastcall TForm1::ButtoneClick(TObject*Sender){uint32_t v[2], chave[4];uint32_t tamaarq;
FILE *origem,*destino;int q;char buffer[2];
tamaarq =FileSizeByName(nomearq->Text);// OBTEM O TAMANHO DO ARQUIVO EM BYTES
pb1->Max= tamaarq;// CONFIGURA A BARRA DE PROGRESSO
pb1->Position=0;
tamaarq =0;//CONVERTE A CHAVE DO USUARIO PARA O FORMATO UINT32
chave[0]= edtch->Text[1];
chave[1]= edtch->Text[2];
chave[2]= edtch->Text[3];
chave[3]= edtch->Text[4];if((origem=fopen(nomearq->Text.c_str(),"rb"))!=NULL){//ABRE O ARQUIVO ORIGINAL ENCRIPTADOif((destino=fopen(DESTINO,"wb"))!=NULL {// ABRE O ARQUIVO DE DESTINOdo{
q = fread(v,sizeof(uint32_t),2,origem);//LE DUAS UNIDADES ENCRIPTADASif(q>0){
decipher(QDEPASSOS,v,chave);// DECRIPTA AS UNIDADES
buffer[0]= v[0]; buffer[1]= v[1];// CONVERTE EM CARACTERES ASCII
fwrite(buffer,sizeof(char),2,destino);// GRAVA O ARQUIVO DE DESTINO DECRIPTADO}
tamaarq += q; pb1->Position= tamaarq;// AJUSTA A BARRA DE PROGRESSOApplication->ProcessMessages();}while(q==2);
fclose(destino);//FECHA O ARQUIVO DE DESTINO}
fclose(origem);// FECHA O ARQUIVO DE ORIGEM}// DELETA E RENOMEIA OS ARQUIVOSDeleteFile(nomearq->Text);RenameFile(DESTINO,nomearq->Text);
pb1->Position=0;MessageBox(Form1->Handle,"Operação de decriptação concluida","Atenção",MB_ICONINFORMATION);}
Pergunta
Jose Simao
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.