Fernando D. Bozzo
unread,Jan 25, 2013, 9:49:56 AM1/25/13Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to publice...@googlegroups.com
Hola Antonio:
El encriptado de claves no tiene misterio, lo único que no hay que hacer es guardar la clave original, incluso aunque sea encriptada.
Hay varios esquemas de seguridad, pero el más sencillo consiste en pedir una clave, obtener el hash MD5 o similar de esa clave (por ejemplo usando lo librería gratuita FoxCrypto.FLL) y guardar ese hash en la base de datos.
Luego, para validar una clave, solo hay que volver a obtener el hash de la nueva clave y comparar el hash obtenido con el de la base de datos, si no coinciden los hashes entonces la clave es inválida.
Lo bueno de este sistema es que la clave real nunca se almacena, y ni siquiera el administrador del sistema puede saberla, lo que no quita que el administrador pueda resetearla a una nueva, pero por lo menos la elección de la clave permanece segura.
Un ejemplo:
Ingreso la clave "ABCD", que tiene el hash MD5 "cb08ca4a7bb5f9683c19133a84872ca7", que es el que se guarda en la BDD.
Luego el usuario se loguea y se le pide nuevamente la clave, donde supongamos que la pone mal:
Ingresa la clave "ABCF", que tiene el hash MD5 "d51f782bc42c5e183ce16a74eb806397", que es el que se compara con el guardado en la BDD
Al ser distintos, la clave es inválida, si no erán iguales y todo bien. Ahora, mirando el hash guardado en la BDD es casi imposible saber cuál era la clave original.
Otro tema es la colisión de hashes, pero sobre eso hay material en la web, y está fuera del alcance del usuario común.
Cuanto más complejo sea el hash generado (no tiene por qué ser MD5, hay otros), más segura será la encriptación y más difícil poder obtenerla.
Saludos.-