Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Función para encriptar password (https://www.clubdelphi.com/foros/showthread.php?t=80648)

dec 30-06-2006 23:47:11

Función para encriptar password
 
Esta función se recomienda para encriptar password qeu se alojaran en tu base de datos sirve en kylix y delphi. de la misma manera. debes declarar la sig. funcion antes de la clasula implementacion segun el s.o qeu desees.

Linux:

Código Delphi [-]
function crypt(const PWD: string; const SALT: string): Pchar; cdecl; external 'libcrypt.so';

Windows:

Código Delphi [-]
function cryptpwd(const PWD: string; const SALT: string): Pchar; cdecl; external 'C:\WINDOWS\SYSTEM\cryptpwd.dll';

Despues esta funcion.

Código Delphi [-]
function CryptPasswd(ClearPwd: string): string;
var
   SaltContent: array [1..64] of integer;
   I,Count: Integer;
   Salt: string[2];
   Pwd: PChar;
begin
    Randomize;
    I:=1;
    for Count := 46 to 57 do
        Begin
           SaltContent[i] := Count;
           I:=I+1;
       End;

    for Count := 65 to 90 do
        Begin
            SaltContent[i] := Count;
            I:=I+1;
       End;

   for Count := 97 to 122 do
        Begin
            SaltContent[i] := Count;
            I:=I+1;
        End;

  Salt := chr(SaltContent[Random(64)+1])+chr(SaltContent[Random(64)+1]);

  Pwd := crypt(ClearPwd,Salt);

  Result := Pwd;

end;

Para encriptar seria asi:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
    crypt.Text:=CryptPasswd(Password.Text);
end;

Se recomienda ponerlo en un try en caso de uqe el edit vaya vacio.

La funcion qeu en realidad encripta es la adeclarada la inicio la cual obtiene como parametro un salto y el texto a encriptar; este salto (asi se le conoce) es dado por la segunda funcion la cual lo escoge al azar y si se vuelve a encriptar la misma cadena, como el salto es aleatorio .lo encritara de forma diferente. Para verificar password. se debe de mandar a encriptar pasandole como parametro de salto las primera dos posciones del texto encriptado. y se hace asi.

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var salt:string;
begin
    salt:=copy(crypt.Text,1,2);
    decrypt.Text:=Cryptpwd(Password.Text,salt);
    if decrypt.Text = crypt.Text then
        label1.Caption:='Ambos password encriptados correctamente' // significa que el password se pudo verificar
    else
        label1.Caption:='No se encriptaron correctamente'; // el password no se verifico.
end;

Necesitas dos librerias en Windows: cryptpwd.dll y cywin1.dll

Espero que les sirva.

Si desean de un ejemplo tan solo escribanme.

isabelb (ARROBA) reco.com.mx


La franja horaria es GMT +2. Ahora son las 19:54:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi