Ver Mensaje Individual
  #8  
Antiguo 04-09-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Vamos a ver que tal este algoritmo:
Código Delphi [-]
function PassGen(Str: String): String;
const
  Alfa = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var
  i: Integer;
begin
  Result:= EmptyStr;
  // Calculamos el md5 de Str
  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í
Responder Con Cita