Vamos a ver que tal este algoritmo:
Código Delphi
[-]
function PassGen(Str: String): String;
const
Alfa = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var
i: Integer;
begin
Result:= EmptyStr;
Str:= CalcHash2(Str,haMd5);
for i:= 0 to (Length(Str) div 4) - 1 do
Result:= Result +
Alfa[(StrToInt('$'+Copy(Str,(i*4)+1,4)) mod Length(Alfa))+1];
end;
Comprobamos que cumple con lo requisitos:
- La contraseña generada es de 8 caracteres
- Sólo contendrá letras ('A'..'Z','a'..'z','0'..'9')
Para generar una contraseña:
Código Delphi
[-]
Password:= PassGen(Nombre + Apellido + Numero + Fecha + Secreto);
Siendo Nombre, Apellido, Numero, Fecha y Secreto variables de tipo string.
La contraseña sera siempre la misma para el mismo parámetro de entrada, pero cualquier variación, por pequeña que sea, generara una contraseña completamente diferente.
PD: La función CalcHash2 forma parte de la unit Hashes.pas que puedes bajar de
aquí