Criptografia

25/02/2010

9

Bom dia galera! Gostaria da ajuda de vcs, tenho duvidas em como posso fazer uma tela de login Criptografada! Componentes que vcs utilizam, código fontes, dicas serão bem vindas! Espero que possamos compartilhar conhecimento... AbraçoO
Responder

Posts

25/02/2010

Thiago Santana

Ah galera esqueci de dizer que esta tela de login será ligado a um banco de dados salvando a senha criptografa em um campo no BD! Espero que possam mim ajudar! AbraçoO
Responder

25/02/2010

Frost

Boa Tarde

Thyago

dica bem simples pois não estou no trabalho agora

Usando o DELPHI 2010 com JVCL - componente usado para criptografia - JvVigenereCipher1
já no delphi 2007 se não me engano vem um componente padrao para criptografia


procedure TForm1.Button1Click(Sender: TObject);
var
  Result : String;
begin
  // Obrigatorio para uma criptografia
 
  JvVigenereCipher1.Key := '22algumacoisa'; /// chave

  //String nao encriptada
  JvVigenereCipher1.Decoded := Edit1.Text;

  //  Resulta a string encriptada

  Result := JvVigenereCipher1.Encoded;   // Exibe a string encriptada

  JvVigenereCipher1.Decoded := ' ' ; // Limpa a string nao encriptada

  //Informa somente a string encrpitada
 
 JvVigenereCipher1.Encoded := Result;

  // Exibe o resultado do decript

 Result := JvVigenereCipher1.Decoded;
 Edit3.Text := Result;

end;

end.
Responder

25/02/2010

Thiago Santana

Gostei do exemplo Frost eu utilizo delphi 2010 tbein... Então devo salvar a senha encriptografada no banco e na hora de efetuar o login devo descriptografa-lá e comparar com a senha informada pelo usuário? Ou devo encriptografar a senha de login do usuário e compara-lá com a que está encriptografada no banco? E o delphi 2010 já vem com algum componente para encriptografar ou devo instalar? No meu trabalho tem este componente: JvVigenereCipher1...
Responder
Thiago, criptografia é um assunto muito extenso, e requer estudo, a medida que se estuda sobre assunto, se aprende sobre os algoritmos, chaves com 64, 128 bits, chave rush, etc.   Mas em um primeiro momento, vc poderia usar a solução proposta pelo colega ou tentar alguma coisa bem simples, porém funcional.   Lembrando que nenhuma chave é 100% segura, a galera quebra chaves de grandes sistemas não é mesmo?   Dê uma olhada no código abaixo.   function Encode(StrValue : String; Chave: Word) : String;
var
  I: Integer;
  OutValue : String;
begin
  OutValue := '';
  for I := 1 to Length(StrValue) do
  OutValue := OutValue + char(Not(ord(StrValue[I])-Chave));
  Result := OutValue;
end;   Modo de utilização:   Edit2.Text := Encode(Edit1.Text, 879);   Esse código pode ser usado para criptografar e descriptografar.   Qualquer coisa, estaremos a disposição.   Boa sorte e bons códigos.    
Responder
Eu geralmente prefiro comparar as strings criptografadas, não gosto muito de descriptografar para comparar, mas claro que depende do desenvolvedor e de como ele implementou seus metodos de codificação da string.   Boa sorte!
Responder

25/02/2010

Thiago Santana

Blza Perivaldo... Assim comecei a trabalhar profissionalmente com Delphi a pouco tempo, então quero mim aprofundar o máximo! Pois no meu trabalho requer muito o domínio nessas areas... Os componentes para encriptografar ajudam bastante né? E sobre o tópico da Inputbox?    
Responder

25/02/2010

Thiago Santana

Perivaldo olha aê o que eu consegui fazer com as dicas que vc e o frost mim passaram:   procedure TForm1.btncadastrarLoginClick(Sender: TObject);
begin
  // Obrigatorio para uma criptografia
  JvVigenereCipher1.Key := 'Thiago'; /// chave teste   JvVigenereCipher1.Decoded := EditSenha.Text;
  Result := JvVigenereCipher1.Encoded;   // Exibe a string encriptada
  Label3.Caption := Result;
  IBOQuery1.Append;
  IBOQuery1.FieldByName('USUARIO').AsString := EditUsuario.Text;
  IBOQuery1.FieldByName('SENHA').AsString := JvVigenereCipher1.Encoded;
  IBOQuery1.Post;
  IBOQuery1.IB_Transaction.CommitRetaining; end;   procedure TForm1.btnAcessarClick(Sender: TObject);
Var
SenhaCrip : String;
Usuario : String;
Result : String;
begin
JvVigenereCipher1.Key := 'Thiago';   // Só foi um teste de key
JvVigenereCipher1.Decoded := EditSenha.Text;
Result := JvVigenereCipher1.Encoded;   // Exibe a string encriptada
usuario := EditUsuario.Text;
IBOQuery2.Close;
IBOQuery2.SQL.Add('Select USUARIO, SENHA FROM LOGIN WHERE USUARIO = ' + QuotedStr(EditUsuario.Text));
IBOQuery2.Open;
if ((Usuario = IBOQuery2.FieldByName('USUARIO').AsString)) and ((Result = IBOQuery2.FieldByName('SENHA').AsString)) then
   begin
   ShowMessage('Login Efetuado com sucesso!');
   IBOQuery2.SQL.Clear;
   end
   else begin
   ShowMessage('Usuário e/ou Senha inválido!');
   IBOQuery2.SQL.Clear;
end;
end;
O que você achou? Ficou bom ou devo mudar algo? Agradecido...
Responder
Não uso componentes JVCL (jedi), mas vc já testou? Se funcionou tudo blz, então tá certinho, com o tempo vc vai ver se precisa ou não enxugar seu código. Como não utilizo o componente não posso expressar comentários mais aprofundados, mas creio q ficou bom.   boa sorte e bons códigos.      
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira