Cifrado en MySQL

Muchas veces queremos guardar datos en una base de datos MySQL de forma cifrada. Una forma muy eficiente es guardando el contenido con un hash tipo md5 o sha-1. Estos dos algoritmos permiten guardar los datos de forma cifrada y muy difícil de recuperar.

Podemos utilizar esta codificación de la siguiente manera (extraido del manual MySQL):

  1. CREATE TABLE md5_tbl (md5_val CHAR(32), ...);
  2. INSERT INTO md5_tbl (md5_val, ...) VALUES(MD5('abcdef'), ...);

El problema que ocurre en este caso es que nosotros tampoco podemos recuperar la información. Esto hace que sea un método muy útil para contraseñas. así la que nos introduce el usuario es cifrada y la podemos comparar con esta.

Recuperando datos cifrados

Puede ocurrir el caso en el que queramos mantener datos cifrados en la base de datos, pero, al mismo tiempo poder recuperarlos. Para ello utilizamos otro tipo de funciones que utilizan una clave externa para realizar la codificación del contenido del campo. Una que nos puede resultar muy útil es AES_ENCRYPT. Esta función nos permite cirar un contenido juntamente con la clave y posteriormente, con AES_DECRYPT y la clave recuperar el valor original.

Un ejemplo puede ser el siguiente:

  1. INSERT INTO t (col1, col2) VALUES (1, AES_ENCRYPT('valor original', 'clave'));
  2. SELECT col1, EAS_DECRYPT(col2, 'clave');

Hemos de tener en cuenta que para utilizar este cifrado la columna la hemos de definir como VARBINARY, y que normalmente con una longitud de 32 suele ser suficiente. En nuestro ejemplo la columna definida como varbinary sería col2.

Eperamos que os sea de utilidad este tipo de cifrado.

Etiquetas: 

Comentarios

Añadir nuevo comentario

Filtered HTML

  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Plain text

  • No se permiten etiquetas HTML.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Saltos automáticos de líneas y de párrafos.
CAPTCHA
Esta pregunta se realiza para comprobar que se trata de un humano y prevenir los accesos automatizados para publicar spam.