En este tutorial estaremos realizando un script PHP para cifrado de datos o información. En concreto, vamos a ver una manera muy rápida y fácil de encriptar texto plano para que sea indescifrable y luego en caso se requiera, pueda ser guardado en una base de datos teniendo la seguridad de que no podrá ser adivinado.
Uno de los métodos más utilizados para almacenar contraseñas hoy en día es encriptando primero dichas claves y luego guardándolas en una base de datos. Un buen algoritmo de encriptación usualmente permite encriptar texto plano a un nivel tan complejo que resulta imposible quitarle dicha encriptación, lo cual puede representar un problema pues una vez encriptado un texto plano (por ejemplo una contraseña) resulta imposible recuperar el texto original. Es por este detalle que muchas veces cuando se intenta recuperar una contraseña de un sitio web nos ofrecen en cambio la opción de re-establecer la contraseña ya que para ellos también resulta imposible recuperar el texto plano de la clave. Este aspecto tiene una ventaja muy importante la cual es en caso de que algún usuario malicioso se apodere de la base de datos donde se guarda esta información sensible (o también podría ser un archivo) no podrá ver ni descrifrar el texto encriptado.
En PHP contamos con diferentes funciones de encriptación, siendo una de las más utilizadas la función MD5(). Esta función nos permitirá encriptar un texto plano con el algoritmo MD5. Vamos a ver su uso en el siguiente ejemplo:
<?php $clave = "jose"; //definimos un texto plano, por ejemplo una clave $clave_encriptada = md5($clave); //encriptamos el texto plano con la función MD5 echo "La clave $clave encriptada con MD5 es la siguiente: <b>$clave_encriptada</b>"; //mostramos el resultado ?>
En el código mostrado estamos encriptando el texto plano “jose” con MD5, obteniendo de resultado lo siguiente:
662eaa47199461d01a623884080934ab
Este resultado siempre será exactamente el mismo para el mismo texto plano “jose”. Es decir, si ustedes prueban encriptando el texto “jose” obtendrán exactamente el mismo resultado. Si varían alguna letra o aumentan cualquier letra, el texto resultante cambiará. Cabe destacar que el resultado de un texto plano encriptado en MD5 siempre tendrá 32 caracteres de longitud.