ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[Resolvido Duvida] - Tabela de Login com senha criptpgrafada

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
RFG
Novato
Novato


Registrado: Quarta-Feira, 18 de Mai de 2005
Mensagens: 85

MensagemEnviada: Qui Mai 05, 2011 12:58 pm    Assunto: [Resolvido Duvida] - Tabela de Login com senha criptpgrafada Responder com Citação

Boa tarde amigos.

Estou desenvolvendo um programa com login e senha, mas gostaria que quando o cadastro do usuário fosse gravado no banco a senha armazenada já estivesse criptografada, para evitar que ninguém possa dar um select na tabela de usuário e visualize a senha. E se necessário recuperar apenas eu conheça como descriptografar. Isso é possível?

Obrigado.

Rildo Ferreira


Editado pela última vez por RFG em Qui Mai 05, 2011 7:50 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
abagattini
Mestre
Mestre


Registrado: Terça-Feira, 29 de Novembro de 2005
Mensagens: 758
Localização: Porto Alegre/RS

MensagemEnviada: Qui Mai 05, 2011 1:08 pm    Assunto: Responder com Citação

Código:

function Cripto(Texto:String):String;
var Cont,Cod:Integer;Retorna:String;Letra:string[1];
begin
  for Cont:=1 to Length(Texto)do
  begin
    Cod:=ValorAsc(Copy(Texto,Cont,1));
    if     ((Cont mod 5)=0)then Letra:=Chr(Cod+VALOR_CRIPTO_2)
    else if((Cont mod 3)=0)then Letra:=Chr(Cod+VALOR_CRIPTO_3)
    else if((Cont mod 2)=0)then Letra:=Chr(Cod+VALOR_CRIPTO_4)
    else                        Letra:=Chr(Cod+VALOR_CRIPTO_1);
(*
    if     (Letra='/')then Letra:='b'
    else if(Letra='\')then Letra:='c'
    else if(Letra=':')then Letra:='d'
    else if(Letra='"')then Letra:='e'
    else if(Letra='<then> 0 then ValorAsc := Ord(Letra[1]) else ValorAsc := 0;
end;

Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
RFG
Novato
Novato


Registrado: Quarta-Feira, 18 de Mai de 2005
Mensagens: 85

MensagemEnviada: Qui Mai 05, 2011 5:51 pm    Assunto: Responder com Citação

Desculpa, onde devo criar? É em algum evento da tabela?

Obrigado.

Rildo Ferreira
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rafacauly
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 30 de Setembro de 2010
Mensagens: 194

MensagemEnviada: Qui Mai 05, 2011 5:57 pm    Assunto: Responder com Citação

pelo q entendi essa função vc usa pra criptografar a senha e manda essa senha criptografado pro insert do banco...

se vc deseja mais segurança aconselharia a usar função de encriptação q não tem volta, tipo MD5.
_________________
Jesus loves you!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
RFG
Novato
Novato


Registrado: Quarta-Feira, 18 de Mai de 2005
Mensagens: 85

MensagemEnviada: Qui Mai 05, 2011 6:34 pm    Assunto: Responder com Citação

É que eu não devo ter sido claro. Quero criptografar a senha no cadastro do usuário e armazená-la criptografada no banco, mas se o usuário esquecer e pedir para recuperar eu consiga ler "Como seria para fazer isso?". E também no momento do login, no meu form de login eu utilizo TEdit para a senha. Quando digitar a senha ele vai consegui ler?

Obrigado.

Rildo Ferreira
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rafacauly
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 30 de Setembro de 2010
Mensagens: 194

MensagemEnviada: Qui Mai 05, 2011 6:52 pm    Assunto: Responder com Citação

tenho uma :
Código:

function Crypt(Action, Src: String): String;
Label Fim;
var KeyLen : Integer;
  KeyPos : Integer;
  OffSet : Integer;
  Dest, Key : String;
  SrcPos : Integer;
  SrcAsc : Integer;
  TmpSrcAsc : Integer;
  Range : Integer;
begin
   if (Src = '') Then
   begin
      Result:= '';
      Goto Fim;
   end;
   Key :='YUQL23KL23DF90WI5E1JAS467NMCXXL6JAOAUWWMCL0AOMM4A 4VZYW9KHJUI2347EJHJKDF3424SKLK3LAKDJSL9RTIKJ';
   Dest := '';
   KeyLen := Length(Key);
   KeyPos := 0;
   SrcPos := 0;
   SrcAsc := 0;
   Range := 256;
   if (Action = UpperCase('CRYPT')) then
   begin
      Randomize;
      OffSet := Random(Range);
      Dest := Format('%1.2x',[OffSet]);
      for SrcPos := 1 to Length(Src) do
      begin
         Application.ProcessMessages;
         SrcAsc := (Ord(Src[SrcPos]) + OffSet) Mod 255;
         if KeyPos < KeyLen then
            KeyPos := KeyPos + 1
         else
            KeyPos := 1;

         SrcAsc := SrcAsc Xor Ord(Key[KeyPos]);
         Dest := Dest + Format('%1.2x',[SrcAsc]);
         OffSet := SrcAsc;
      end;
   end
   Else if (Action = UpperCase('DECRYPT')) then
   begin
      OffSet := StrToInt('$'+ copy(Src,1,2));
      SrcPos := 3;
      repeat
         SrcAsc := StrToInt('$'+ copy(Src,SrcPos,2));

         if (KeyPos < KeyLen) Then
            KeyPos := KeyPos + 1
         else
            KeyPos := 1;

         TmpSrcAsc := SrcAsc Xor Ord(Key[KeyPos]);
         if TmpSrcAsc <OffSet>= Length(Src));
   end;
   Result:= Dest;
   Fim:
end;

Código:

vc usa assim : 
Crypt("CRYPT", "senha12345"); //retorna senha criptografada
Crypt("DECRIPT", "ABDHAUYSGAUS37129837218");
 // retorna senha original

para aparecer * no edit (pro usuario nao ver a senha), vc altera a propiedade passwordchar e coloca um *.

mas repito essa senha é facil de quebrar, se vc deseja mais segurança usa tipo um md5, se o usuario esquecer da senha vc cria uma loka pra ele (é assim em praticamente todos os sistemas da web)[/code]
_________________
Jesus loves you!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
RFG
Novato
Novato


Registrado: Quarta-Feira, 18 de Mai de 2005
Mensagens: 85

MensagemEnviada: Qui Mai 05, 2011 7:21 pm    Assunto: Responder com Citação

Desculpa, mais uma duvida.

Isso deve ser um evento na tabela? No post?

Obrigado.

Rildo Ferreira
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rafacauly
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 30 de Setembro de 2010
Mensagens: 194

MensagemEnviada: Qui Mai 05, 2011 7:33 pm    Assunto: Responder com Citação

como assim?
esse código vc usa pra cria o senha encriptada ou pra pega ela de volta.
ex:
saber se a senha do usuario ta correta:
Código:

SQL.Add(' SELECT * FROM TABLE_USUARIO WHERE SENHA = '+QuotedStr(Crypt("CRYPT", edtSenha.text))+' AND LOGIN = ...');
Open;
if isEmpty then
   //senha ou login errado


pegar senha de volta do cara:
Código:

SQL.Add(' SELECT * FROM TABLE_USUARIO WHERE LOGIN = '+QuotedStr('RFG');
Open;
senha := Crypt("DECRYPT"), fieldbyname('SENHA').asString);

_________________
Jesus loves you!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
RFG
Novato
Novato


Registrado: Quarta-Feira, 18 de Mai de 2005
Mensagens: 85

MensagemEnviada: Qui Mai 05, 2011 7:51 pm    Assunto: Responder com Citação

Ok. Muito obrigado!

Rildo Ferreira
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB