2011-09-18 4 views
13

J'ai donc navigué sur Internet et suis tombé sur la fonction intégrée MySQL AES_ENCRYPT. Cela ne semble pas trop difficile à utiliser, mais certaines sources me disent de stocker les données cryptées en tant que VARCHAR, et certains disent de les stocker en tant que BLOB. Que dois-je stocker les données cryptées?MySQL - Comment stocker les données AES_Encrypted?

+0

Quelqu'un peut-il m'aider? –

+1

Attention, MySQL utilise AES en mode ECB. Pour les chaînes courtes préfixe avec un sel pour les longues chaînes faites votre cryptage en dehors de mysql. Voir: http://en.m.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 pour voir pourquoi c'est un problème. – Johan

Répondre

18

De nombreuses fonctions de chiffrement et de compression renvoient des chaînes pour lesquelles le résultat peut contenir des valeurs d'octet arbitraires. Si vous souhaitez stocker ces résultats, utilisez une colonne avec un type de données chaîne binaire VARBINARY ou BLOB. Cela évitera les problèmes potentiels de suppression de l'espace de fin ou de conversion de jeu de caractères qui modifieraient les valeurs de données, comme cela peut se produire si vous utilisez un type de données chaîne non binaire (CHAR, VARCHAR, TEXT).

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

+1

Merci, je vais voir si BLOBS fonctionne. –

0

Vous pouvez utiliser Binaire. BINAIRE dans STRING. Ça doit marcher. Je l'utilise. Écris-moi la réponse si ça ne marche pas.

0

J'ai toujours utilisé des blobs pour stocker des données cryptées dans MySQL.

1

Si vous devez utiliser VARCHAR, plutôt que blob, puis convertir le fichier binaire chiffré à base64 qui utilise uniquement des caractères imprimables et peuvent être stockés en toute sécurité comme VARCHAR. Bien sûr, vous devrez le convertir de Base64 en binaire avant de le déchiffrer.

Questions connexes