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' else
label1.Caption:='No se encriptaron correctamente'; 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