Columna MySQL para cifrado

Necesito crear una pequeña aplicación privada. Quiero almacenar una pieza de información de identificación personal (es un número de cuenta interno, no un SSN ni nada parecido a súper sensible) en una tabla que lo "encripta".

Pongo los cifrados entre comillas porque deseo que los datos se almacenen de la siguiente manera:

  • almacenados de manera que si alguien mirara físicamente los datos de la tabla, la información no sería discernible
  • almacenados de una manera que si alguien hiciera una consulta simple seleccionar la salida de datos resultante no sería discernible
  • sin embargo, cuando escribo mi propia declaración de selección de consulta, todavía puedo descifrar los datos y presentarlos de manera legible

En otras palabras, lo quiero solo moderadamente cifrado para poder descifrarlo y leerlo. Sé que el hash MD5 bloquea el valor para que no se lea. Quiero algo menos que eso.

Muchas Gracias

preguntado el 01 de febrero de 12 a las 22:02

3 Respuestas

MD5 es NO cifrado. Es hash.

Si no le importa pasar la clave de cifrado en cada consulta, es trivial tener esto en MySQL:

SELECT AES_DECRYPT(crypted_field, 'crypt key goes here') AS decrypted

y

INSERT INTO yourtable (crypted) VALUES (AES_ENCRYPT('some string', 'crypt key'));

Respondido 02 Feb 12, 02:02

Creo que lo que está buscando es "Cifrado de clave simétrica". Puede usar una clave para cifrar sus datos y la misma clave para descifrarlos según sea necesario (a diferencia de una función hash que, como dijo, hace que los datos originales sean irrecuperables). En MySQL, echaría un vistazo al Funciones AES_Encrypt y AES_Decrypt.. ¡Con suerte, eso le indicará la dirección correcta!

Respondido 02 Feb 12, 02:02

MySQL proporciona tanto Cifrado DES y AES. Deberá averiguar la administración de claves, pero los algoritmos de cifrado están disponibles.

Respondido 02 Feb 12, 02:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.