Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Renanbg

[Resolvido] tela de login

Recommended Posts

Olá amigos,

 

tenho o codigo abaixo para um form de login com base de dados paradox

 

procedure Tfrmlogin.BitBtn1Click(Sender: TObject);
Var
Mensagem : String;
begin
if (frmdm.tbusuarios.Locate('Usuario',edit1.Text,[])) and (frmdm.tbusuarios.FieldByName('Senha').AsString = MaskEdit1.Text) then
begin
frmlogin.Close;
end
else
begin
Mensagem := 'Usuário ou senha incorretos, tente novamente!';
Application.MessageBox(PCHAR(Mensagem), 'Atenção', MB_ICONWARNING + MB_OK);
Edit1.SelText;
Edit1.SetFocus;
end;
end;

Agora estou implementando uma rotina para criptografar o campo senha no banco. Até agora esta ok, no cadastro de usuarios eu gravo o campo senha já criptografado.

 

Então eu preciso descriptografar ele no form de login para fazer a leitura. Aqui eu não to conseguindo.

 

O comando para descriptografar é:

 

Edit.Text:=Decripta('D',Edit2.Text);

 

Alguma ideia de como usar isso no codigo que já possuo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz ao contrário que é melhor, criptografa a senha digitada pelo usuário e então faz a comparação com a senha do banco, algo como:

 

 

procedure Tfrmlogin.BitBtn1Click(Sender: TObject);
Var
Mensagem : String;
begin
if (frmdm.tbusuarios.Locate('Usuario',edit1.Text,[])) and (frmdm.tbusuarios.FieldByName('Senha').AsString = Cripta(MaskEdit1.Text)) then
begin
frmlogin.Close;
end
else
begin
Mensagem := 'Usuário ou senha incorretos, tente novamente!';
Application.MessageBox(PCHAR(Mensagem), 'Atenção', MB_ICONWARNING + MB_OK);
Edit1.SelText;
Edit1.SetFocus;
end;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deu certo Marcio.

 

Desconfio que é pelo fato de a função encriptar um mesmo valor de varias formas diferentes

 

ex: se eu encriptar o valor 123456 ele pode ficar 5465asfgagwe mas tbm pode ficar fgsdgsd54654

 

ja para decriptar sempre dá certo.

 

Por isso acho que a unica saida é decriptar o valor no banco e comparar com o digitado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendo, então a princípio seria alterar somente a lógica... ficando:

 

 

procedure Tfrmlogin.BitBtn1Click(Sender: TObject);
Var
Mensagem : String;
begin
if (frmdm.tbusuarios.Locate('Usuario',edit1.Text,[])) and (Decripta('D',frmdm.tbusuarios.FieldByName('Senha').AsString) = MaskEdit1.Text) then
begin
frmlogin.Close;
end
else
begin
Mensagem := 'Usuário ou senha incorretos, tente novamente!';
Application.MessageBox(PCHAR(Mensagem), 'Atenção', MB_ICONWARNING + MB_OK);
Edit1.SelText;
Edit1.SetFocus;
end;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.