Todos los MD5 son de 32 caracteres, Por tanto, el datatype debiese ser
char(32).
Lo mejor para encriptar una contraseña es jugar con los SALT, ya que
si encriptas la password a secas sera cosa de buscar el string md5 en
google y daras con la contraseña, sino por fuerza bruta.
Cabe recordar que no existe forma de hacer un reverso de un MD5, por
tanto, el SALT siempre lo debes de recordar en tu aplicación.
SELECT md5('pass123' || 'SALT2 %&/323* *');
SELECT md5('12345' || 'SALT2 %&/323* *');
SELECT md5('micasa' || 'SALT2 %&/323* *');
El 07-12-2009, a las 12:04, Roberto Rodríguez Pino escribió:
El lun, 07-12-2009 a las 12:07 -0300, Z.M. escribió:
CREATE TABLE usuario(
login varchar(8) primary key, -- nombre de usuario
codsistema int, -- codigo externo al sistema, asignado por el
sistema UMV (compativilidad)
password varchar(32), -- contraseña suministrada por el usuario
permiso varchar(2) -- codigo de los permisos del usuario
);
¿hay alguna manera de ocultar el campo password? Es decir hoy
abro la base de datos access y puedo ver el password de todos los
usuarios. ¿Hay alguna manera de encriptar este password para que
sea ilegible aun para el administrador de la base de datos? ¿Hay
algun tipo especial de dato que me permita hacer esto?
Hace tanto tiempo que trabaje con Access, pero creo recordar que
existía
un tipo de datos password, que de ocultaba la contraseña ... ahora
no me
queda claro si era un tipo de dato o una función.
En postgresql se me ocurre sin darle mucho taller que al captarlos
de
apliques la función MD5(md5... lo tecleado)
Entonces la funcion MD5() me devuelve un dato de tipo varchar() ¿es
correcto? ¿podria decir que la estructura de la tabla esta bien
planteada? Mas alla que el dato que teclee el usuario, lo tenga que
pasar por la funcion MD5() para compararlo con el de la tabla.
Si. Aunque averigua de que largo queda la salida despues de pasar por
md5 el texto ingresado (la password en si). Puede que te quede corto
el
campo.
Saludos,
Roberto
------------------------
Manuel Diego Paillafil Gamboa
[email protected]
Móvil: 06 - 801 60 24