Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/09/2012, 16:55
Avatar de Jorge1801
Jorge1801
 
Fecha de Ingreso: julio-2011
Ubicación: Colombia
Mensajes: 54
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: Login encriptar

Cita:
Iniciado por DoHITB Ver Mensaje
Hola Jorge.

Según parece quieres encriptar cosas con un hash simple (en este caso md5), y a la vez mantener un sistema case sensitive.

Pues bien, lo bueno de los hash es que cada valor de digest es diferente para cada valor de entrada. Usando un ejemplo real:

Código:
md5(hola) -> 4d186321c1a7f0f354b297e8914ab240
md5(HolA) -> d4fa99092b02aa32703bb8dab17b9da9
El tema de cambiar el cotejamiento a utf8_bin... yo siempre uso utf_unicode_ci y me funciona bien con los hash.

Tienes que tener en cuenta los siguientes aspectos que puede que olvides alguno sin querer:

- Guardar como VARCHAR de longitud adecuada (32 para md5)
- Buscar el dato encriptado con dato encriptado (por ejemplo en el where -> where campo = md5($variable))

- Si pones el valor directamente sobre el where, recuerda ponerlo entre comillas.

Espero te haya ayudado. Saludos


Muchas gracias, me guió bastante lo que me dijiste.

Lo que hice fue lo siguiente en el campo contraseña le coloque VARCHAR(50) de cotejamiento utf8_bin (para que me distinga las mayusculas y minusculas).

Mi error era que antes le colocaba como tipo de dato VARCHAR(20), entonces al almacenar una contraseña con md5 sobrepasaba la longitud.