2011-09-18 13 views
13

Así que he estado navegando por Internet y encontré la función incorporada de MySQL AES_ENCRYPT. No parece demasiado difícil de usar, pero algunas fuentes me dicen que almacene los datos cifrados como VARCHAR, y algunos dicen que lo almacenen como BLOB. ¿En qué debería almacenar los datos cifrados?MySQL - Cómo almacenar datos AES_Encrypted?

+0

¿Alguien me puede ayudar? –

+1

Tenga en cuenta que MySQL usa AES en modo ECB. Para cadenas cortas prefix con una sal para cadenas largas haga su encriptación fuera de mysql. Consulte: http://en.m.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 para ver por qué esto es un problema. – Johan

Respuesta

18

Muchas funciones de cifrado y compresión devuelven cadenas cuyo resultado puede contener valores de bytes arbitrarios. Si desea almacenar estos resultados, use una columna con un tipo de datos de cadena binaria VARBINARY o BLOB. Esto evitará problemas potenciales con la eliminación del espacio final o la conversión del juego de caracteres que cambiaría los valores de los datos, como puede ocurrir si utiliza un tipo de datos de cadena no binaria (CHAR, VARCHAR, TEXT).

Fuente: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html

+1

Gracias, veré si BLOBS funciona. –

0

Puede usar Binario. BINARIO en STRING. Tiene que funcionar. Lo estoy usando. Escríbeme si no funciona.

0

Siempre he usado blobs para almacenar datos encriptados en MySQL.

1

Si es necesario utilizar VARCHAR, BLOB en lugar de, a continuación, convertir el binario codificado base 64 a la que sólo utiliza caracteres imprimibles y pueden almacenarse con seguridad como VARCHAR. Por supuesto, deberá convertirlo de Base64 a binario antes de descifrarlo.

Cuestiones relacionadas