Jump to content

Postagens Recomendadas

Postado

Olá Caros amigos, boa noite

Estou fazendo teste de criptografia de strings, para mascarar a senha no banco de dados, que é cadastrado a pessoa que irá fazer o login no sistema, no entanto, a criptografia funciona no caso de quando grava no banco de dados, mas quando vamos utilizar ela pra descriptografar e fazer ela ler e passar a senha mesmo ela não vai, vou postar o código aqui, para ver onde eu estou errando, vale lembrar, que é apenas um código de testes para depois eu passar para o sistema em produção....

 

function Codifica(Action, Src: String): String;
Label Fim; // Função para criptografar e descriptografar string''s
var
  KeyLen: integer;
  KeyPos: integer;
  OffSet: integer;
  Dest, Key: String;
  SrcPos: integer;
  SrcAsc: integer;
  TmpSrcAsc: integer;
  Range: integer;
begin
  try
    if (Src = '''') Then
    begin
      Result := '''';
      Goto Fim;
    end;
    Key := ''YUQL23KL23DF90WI5E1JAS467NMCXXL6JAOAUWWMCL0AOMM4A4VZYW9KHJUI2347EJHJKDF3424SKL K3LAKDJSL9RTIKJ'';
    Dest := '''';
    KeyLen := Length(Key);
    KeyPos := 0;
    SrcPos := 0;
    SrcAsc := 0;
    Range := 256;
    if (Action = UpperCase(''C'')) 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(''D'')) 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 then
          TmpSrcAsc := 255 + TmpSrcAsc - OffSet
        else
          TmpSrcAsc := TmpSrcAsc - OffSet;
        Dest := Dest + Chr(TmpSrcAsc);
        OffSet := SrcAsc;
        SrcPos := SrcPos + 2;
      until (SrcPos >= Length(Src));
    end;
    Result := Dest;
  Fim:
  Except
    Result := ''1'';
  end;

Exemplo que estou usando para gravar

 

1
Dmdados.tbUserSENHA_USUARIO.AsString:= Codifica(''C'', edtsenha.text);

 

e Exemplo que estou tentando ler e não funciona

 

   qry_User.Active:= true;
  if (qry_User.locate(''nome_usua'',edtUsuario.Text,[])) and
     (qry_User.fieldbyname(''senha_usuario'').asstring =
     Codifica(''D'', edtSenha.Text)) then
begin
 self.Close;
 qry_user.Active:= false
 end

Bom, está assim porque estou testando essa função, também gostaria de alguns outros exemplos para poder testar e estar implementando ...

Atenciosamente
Agradeço desde já.

  • Curtir 1
  • 2 months later...
Postado (editado)

Não sei se eu entendi, mas você gravou uma senha criptografada, e esta tentando descriptografar a mesma para fazer a leitura e validação no login. Não seria mas fácil criptografar a senha do login e comparar com a senha criptografada do banco?

Editado por James Lopes
  • Curtir 1
  • 3 months later...
  • 9 months later...

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...