Jump to content
BHAMF

Criptografia: Copiar para arquivo

Recommended Posts

BHAMF

Estava aqui, tentando colocar a criptografia de MD5 num arquivo, mas, ao compilar, dá um erro: Can't read or write variables of this type (não se pode ser ou escrever variáveis deste tipo). Mas, então, como consigo escrever em um arquivo?

 

Eis o código: 

program teste md5;
uses
 md5;
begin
   assign(t,'cad1.vlna');
   rewrite(t);
   append(t);
   write(t,MDString('Senha1', MD_Version_5));
   close(t);
end.

Já fiz outros teste, mas só consigo verificar a senha dentro da própria memória: 

program testMD5;
uses
 md5, Crt;

procedure telaDeEntrada;
var
 senha : string;
 hash1 : TMDDigest;
 hash2 : TMDDigest;
 senha2 : string;
begin
 clrscr;
 write('Digite uma senha | >:');
 readln(senha);
 hash1:= MDString(senha, MD_VERSION_5);
 writeln;
 write('Senha ', senha, ' armazenada como: ', MDPrint(hash1));
 writeln;
 write('Agora redigite-a. | >: ');
 readln(senha2);

 hash2:= MDString(senha2, MD_VERSION_5);

 if (MDMatch(hash1, hash2) = true) then begin
  writeln;
  write('Senha 1:', senha, ' hash1: ', MDPrint(hash1));
  writeln;
  write('Senha 2:', senha2, ' hash2: ', MDPrint(hash2));
  writeln;
  writeln('Acesso concedido');
  readln;
 end
  else begin
      writeln;
      write('Senha 1:', senha, ' hash1: ', MDPrint(hash1));
      writeln;
      write('Senha 2:', senha2, ' hash2: ', MDPrint(hash2));
      writeln;
      writeln('Acesso negado');
      readln;
  end;
end;
begin
 telaDeEntrada;
end.

Preciso inserir a hash no arquivo e depois verificar se  a hash coincide com o que foi digitado. Mas não estou conseguindo inserir pelo erro que deu... Peço ajuda a vocês... Fico agradecido desde já!

 

B.H.A.M.F.

23/06/2018 | 12:58 (Horário de Brasília)


Brenio Hallison A.M. Filho

 

Share this post


Link to post
Share on other sites
BHAMF

Consegui adicionar ao arquivo da seguinte forma:

[...]
uses
 md5, Crt;
var
 SenhaHash : string;
 t : text;

   SenhaHash:= MD5Print(MD5String('Senha1'));

   assign(t,'cad1.vlna');
   rewrite(t);
   append(t);
   write(t, SenhaHash);
   close(t);
[...]

Mas ainda assim, não consigo verificar com o que foi digitado... se os dois estão iguais ou diferentes:

[...]
uses 
 md5, Crt;
 SENHA : string;
var
 t : text;
 hash1, hash2 : TMDDigest;
[...]
 assign(t, 'cad1.vlna');
 reset(t);
 readln(t,SENHA);
 close(t);

 write('Digite a senha: ');
 readln(A);
 hash1 := MD5String(A);

 if (hash1 = SENHA) then //isto irá dar um erro no operador "="... ("Operator is not overloaded "TMDDigest" = "AnsiString"")
 [...] 
 end.

if (MDMatch(hash1, SENHA) = true) then begin //Este dará um erro pois a procedure só aceita as variáveis tipo TMDDigest... 
 [...]
end.

{ 
 Sintaxe: 
  function MDMatch(const Digest1, Digest2: TMDDigest): Boolean; 
}

Espero ajuda... Obrigado desde já! 

B.H.A.M.F.

23/06/2018 | 14:29 (Horário de Brasília)

Edited by BHAMF

Brenio Hallison A.M. Filho

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.