Encriptar Contraseñas

Cuando navegamos por internet, tenemos la necesidad de que nuestros datos privados sigan siendo privados. Como programadores, en nuestros proyectos web, es obligatorio que las contraseñas de nuestros usuarios, en este caso, se guarden y se traten de forma encriptada con cualquier algoritmo de escriptación actual.

En la sección Métodos de Encriptación PHP hemos visto los distintos métodos de encriptación, ahora solo nos faltará elegir uno...

¿Como encripto una contraseña con PHP?

La forma más común de encriptar una contraseña es usando la función md5() de PHP, que nos devolverá la cadena que le hemos enviado codificada.

<
$contrasena = md5($contrasena);
>

Una vez encriptada, la guardaríamos en nuestra base de datos (si tenemos una), o si estamos trabajando con sesiones en la variable de sesión. Al ser md5() un método de encriptación asimétrico, es decir, de un solo sentido, no hay forma de poder saber la cadena original. Por esto para saber si un usuario ha introducido la contraseña correcta, deberemos comparar la cadena introducida por el usuario con la que ya teníamos almacenada en el momento de su registro.

La lógica sería así­:

Si md5($contrasena_introducida)=$contrasena_almacenada; entonces el acceso es correcto.

¿Como desencripto una contraseña con md5?

Como hemos comentado más arriba, md5 no puede ser desencriptado. Pero al ser un método de encriptación tan común, hay páginas que se dedican únicamente a almacenar correspondencias entre cadenas y su resultado codificado. Consiguiendo durante estos últimos años una base de datos especialmente grande, que seguramente contendrá esa cadena elegida como contraseña y dará al traste con nuestra seguridad.

Un ejemplo:

www.md5decrypter.com

¿Como consigo más seguridad?

En internet no siempre dependes de la seguridad de tus datos privados, si no del tiempo libre que tenga aquel que quiere que dejen de serlo. Pero podemos darte varios consejos:

  • Utiliza sha1() en vez de md5().
  • Guarda las contraseñas siempre encriptadas en el servidor.
  • Usa los cálculos de encriptación de lado del servidor. Es decir, no utilices Javascript por ejemplo para "ofuscar" tus contraseñas.
  • Si son datos delicados, contrata un certificado de seguridad SSL.

¿Como implemento un sistema de encriptación de doble sentido?

Prueba a usar Huhash y modificalo a tu gusto!