Olá Caros amigos, boa noiteEstou 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 ...AtenciosamenteAgradeço desde já.