Ver Mensaje Individual
  #4  
Antiguo 09-12-2006
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
Tengo entendido que en php existen funciones para generar el hash md5, al menos el compañero dec las utiliza en su proyecto loturak, no se si son propias del lenguaje o usa alguna librería adicional. Pero volviendo al tema de tu pregunta, puedes generar una clave que tenga, por ejemplo, el siguiente formato:
Código:
Fecha+'?'+md5(Fecha+Clave)
Por ejemplo:
Código:
Fecha = 08/12/2006
Clave = 'Clave'
La llave resultante seria = 08/12/2006?e24aa1c25bd93d7e1ec894b79986ae80
Tu programa pediría que se le ingresara esa llave. La fecha sabemos que es todo lo que se encuentre a la izquierda del '?'. Con esa fecha podremos calcular la fecha de caducidad, y calculando su md5 junto con la clave, podemos comprobar que no se manipulo la fecha.

El código en delphi seria algo así:
Código Delphi [-]
const
  Clave = 'Clave';

// Esta funcion nos devuelve la fecha, o una cadena vacia si la llave no es valida
function TestKey(Key: String): String;
var
  i: integer;
begin
  Result:= EmptyStr;
  i:= Pos('?',Key);
  if i > 0 then
    if Copy(Key,i+1,MAXINT) = StrCheckSum(Copy(Key,1,i-1)+Clave) then
      Result:= Copy(Key,1,i-1);
end;

Solo falta el código para generar la clave en php, aunque no creo que resulte difícil es mejor que te ayude alguien con mas experiencia en este lenguaje. Yo te dejo como seria en Delphi, para que te hagas una idea:
Código Delphi [-]
function GenKey(Fecha: String): String;
begin
  Result:= Fecha + '?' + StrCheckSum(Fecha+Clave);
end;

// Por ejemplo
Key:= GenKey(DateToStr(Date));

En los ejemplos anteriores use la siguiente librería para generar los md5:
Archivos Adjuntos
Tipo de Archivo: zip Hashes.zip (1,2 KB, 431 visitas)

Última edición por seoane fecha: 27-03-2007 a las 17:55:34.
Responder Con Cita