Ir para conteúdo
Fórum Script Brasil
  • 0

Fopen/ Pread, Fwrite... To Quebrando A Cabeça, Não Sei Aonde Errei..


WarSoldier

Pergunta

Pessoal, eu abro um arquivo com fopen, em modo binario para leitura e um para escrita...

Leio ele com fread de 3 em tres bytes e faço uma conta, como minha conta é maior que 4 bytes, quando eu utilizo fwrite eu gravo em 4 em 4 bytes...

Ou seja leio em 3bytes, faço uma criptografia e gravo em 4bytes...

até ai tudo bem... dd

Agora eu faço o processo inverso...

Leio em 4bytes e gravo em 3bytes... isso é necessario porque eu to utilizando um criptografia RSA, que utiliza duas chaves, ou seja quando criptografo um 3bytes ele me retorna 4 bytes e quando decriptografo ele retorna 3 bytes... Então eu tenho que fazer isso para o arquivo ser gravado de maneira certa

Eu já fiz um teste, peguei os primeiros 3bytes do arquivo e deu 18430388 depois criptografei dicou 148215021, depois fiz o processo inverso peguei os primeiros peguei os primeiros 4bytes e decriptografei, ficando exatamente igual ao que eu peguei 18430388... Agora nessa ora que acho fiz algo de errado, na ora de gravar esse valor, para ficar igual ao arquivo origina....

Não da para abrir, diz que não esta no formato BITMAP, o tamanho esta igual do original...

O ERRO NÃO ESTA SENDO A CRIPTOGRAFIA E NEM A DECRIPTOGRAFIA, POIS JÀ TESTEI ISSO... ESTA SENDO NA ORA DE GRAVAR E LER...

OBS.: não bote imagem ou arquivo muito grande se não vai demorar rsrsr...

Aqui em baixo esta o codigo quando criptofrafo.

se alguém quiser testar:

{

FILE *AB;

FILE *GE;

AB = fopen("imagem.bmp", "rb"); /* Abre arquivo binário para leitura */

GE = fopen("gerado.bmp", "wb"); /* Abre arquivo binário para escrita*/

unsigned long int POSI, POSGE, DECIMAL, N, X, PP, J;

long long Z;

double size;

int I;

int *NB;

DECIMAL 239998377;

N = 708654517;

NB = convbin(DECIMAL);

//---------- Pegando o tamanho do arquivo..

fseek (AB,0,SEEK_END);

size=ftell(AB);

size=((size-1)/3);

fseek (AB,0,SEEK_SET);

// -------------------------------------------------------

POSI=0;

POSGE=0;

for (J=0; J<=size; J++)

{

fseek (AB,POSI,0);

fread (&PP, 3, 1, AB);

X=PP;

Z=1;

for (I=NB[0]; I>=1; I--)

{

Z=(Z*Z)%N;

if (NB==1)

Z=(Z*X)%N;

fseek (GE,POSGE,0);

fwrite(&Z,4, 1,GE);

}

POSGE=POSGE+4;

POSI=POSI+3;

}

fclose (AB);

fclose (GE);

Label1->Caption="Criptografado";

delete [] NB;

}

//PROCESSO INVERSSO BOTANDO O BMP ORIGINAL

{

FILE *AB;

FILE *GE;

AB = fopen("gerado.bmp", "rb"); /* Abre arquivo binário para leitura */

GE = fopen("decriptado.bmp", "wb"); /* Abre arquivo binário para escrita*/

unsigned long int POSI, POSGE, DECIMAL, N, X, PP, J;

long long Z;

double size;

int I;

int *NB;

DECIMAL = 98995993;

N = 708654517;

NB = convbin(DECIMAL);

//---------- Pegando o tamanho do arquivo..

fseek (AB,0,SEEK_END);

size=ftell(AB);

size=((size-1)/4);

fseek (AB,0,SEEK_SET);

// ----------

POSI=0;

POSGE=0;

for (J=0; J<=size; J++)

{

fseek (AB,POSI,0);

fread (&PP, 4, 1, AB);

X=PP;

Z=1;

for (I=NB[0]; I>=1; I--)

{

Z=(Z*Z)%N;

if (NB==1)

Z=(Z*X)%N;

fseek (GE,POSGE,0);

fwrite(&Z,3, 1,GE);

}

POSGE=POSGE+3;

POSI=POSI+4;

}

fclose (AB);

fclose (GE);

delete [] NB;

}

//ISSO AQUI FAZ PARTE DA CRIPTOGRAFIA NÃO A NECESSIDADE DE OLHAR, POIS JÁ TESTEI... É Só PARA SE QUISER RODAR O PROGRAMA

//==============================================

int* convbin(unsigned long int DECIMAL)

{

int* BIN = new int[MAX];

int I;

I=1;

do

{

BIN = DECIMAL % 2;

DECIMAL = DECIMAL / 2;

I++;

}

while (DECIMAL != 0);

BIN[0]=I-1; /*atribui o numero de bits na posicao 0*/

return BIN;

}

Link para o comentário
Compartilhar em outros sites

1 resposta 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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...