Renanbg 1 Denunciar post Postado Abril 29, 2009 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
marcio.theis 3 Denunciar post Postado Abril 29, 2009 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
Renanbg 1 Denunciar post Postado Abril 29, 2009 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
marcio.theis 3 Denunciar post Postado Abril 29, 2009 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
Renanbg 1 Denunciar post Postado Abril 30, 2009 Bingo! Tudo certo Marcio, obrigado pela força Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Abril 30, 2009 beleza... :D Compartilhar este post Link para o post Compartilhar em outros sites