Claves encriptadas con MD5

Quiero encriptar las claves, pensaba utilizar MD5, pero segun estava investigando con MD5, ya no se puede digamos desencriptar las claves, y que tal...

La FAQ Claves encriptadas con MD5 tiene

Pertenece a la categoría:
Pregunta
Quiero encriptar las claves, pensaba utilizar MD5, pero segun estava investigando con MD5, ya no se puede digamos desencriptar las claves, y que tal si a algun usuario se le olvida la clave como la recupera, nose si existe algun programa o funcion que permita encriptar o desencriptar para tener mas seguridad con este tema.
Respuesta de Eric Valera Miller
Para MD5 es muy complicado desencriptar. En todo caso puedes usar base64_encode(password) y luego lo desencriptas con base64_decode(password_encriptado) pero mejor hazlo con md5 por un tema de seguridad.

Imaginate que usas siempre la misma contraseña para varios servicios (tu correo, el programa para controlar tu pc remotamente, la base de datos, etc), y un falso usuario mal intencionado recupera tu contraseña desde tu programa. Podría probarla en otros servicios y así tendrías problemas sin querer y por buena gente. Mejor no le devuelves la contraseña verdadera sino que usas otro algoritmo y se la cambias por una genérica. Algo como “Cct3viP” y que con eso se logee y que cambie la contraseña a la que quiera.
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios

joseluis

15/3/2007
exacto, es mejor no desencripta el password ya encriptado, mejor es darle la opcion al usuario d q si olvida su clave genere una nueva para el y se la envie a su email, obviamente una cadena randomica y secreta, solo la sabria el usaurio q la mando a generar

MoRDi

15/3/2007
El hecho de que el algoritmo de encriptacion MD5 sea indescriptable es la clave de su seguridad, piensa que al enviar una clave por internet, esta puede ser facilmente capturada, si alguien toma un paquete con la clave, tanto sin encriptacion, como con una encriptacion insegura, estamos arriesgando la seguridad de nuestro sitio. La utilidad del MD5 es la siguiente:

El cliente se logea, y mediante javascript se encripta en MD5 su pass q es enviada.
En el servidor se recive el hast md5, una cadena encriptada de 32 caracteres, y se compara con el hast md5 que ya teniamos previamente (nunca se almacena la clave, si no la clave encriptada)
En el caso de que el cliente pierda la clave, mediante un mecanismo de autentificacion (pregunta, fecha de nacimiento, correo electronico... ) se le reenvia una clave aleatoria nueva, y se sustituye en la base de datos su clave anterior por el hast de la nueva clave.

Javier

15/3/2007
Aunque el término encriptar es ampliamente utilizado, el correcto es cifrar. Dicho esto, MD5 es una función resumen de un único sentido, al igual que SHA1 o SHA256, de forma que de la password se puede obtener el hashmd5 pero del md5 no se puede obtener la password.
El una forma correcta de almacenar "passwords", aunque complica un poco la verificación de la password. Una vez introducida por el usuario se calcula la función md5 y se compara con la almacenada.
En caso de pérdida es necesario generar una nueva.
No recomiendo codificar en base 64 pues una vez capturada es demasiado obvio decodificarla (similar a convertir una cadena ascii a hexadecimal o viceversa)

Ariel Tapia

18/3/2007
Tengan OJO. Los procedimientos para calcular el MD5, sha1, sha2, etc, dan como resultado un HASH.
No hay forma de saber a que cadena de caracteres pertenece este hash ya que existe infinidad de combinaciones que pueden arrojar como resultado este mismo HASH. La probabilidad de escribir 2 cadenas diferentes y obtener el mismo HASH es casi despreciable desde el punto de vista practico.
Busca informacion sobre el uso de HASH.

Claudio

22/3/2007
Hola

Les recomiendo leer este Articulo de Patrick Mackay.

Saludos

http://msmvps.com/blogs/pmackay/archive/2004/11/28/21097.aspx

Antonio

11/4/2007
Si te lo puedes permitir, usa SHA256 o SHA1 (mejor la primera). Consumen más que MD5, pero ofrecen un resumen criptográfico de más bits que es, a fin de cuentas, la forma de comparar la fiabilidad de funciones hash diferentes. Eso sí, acuérdate de concatenarle al password original una cadena de texto compleja (un "salt" se denomina). La idea es que, en caso de el hash caiga en malas manos y alguien quiere obtener el password mediante un ataque con diccionarios, el ataque se torne inviable.
Cuando quieras comprobar la validez de un password enviado por el usuario, recuerda concatenarle el "salt".
Lo malo de esto es que tienes que guardar ese "salt" en alguna parte. :-(
FAQ relacionadas
Volver al árbol de categoríasVolver al árbol de categorías