====== Criptare dati di un database MySQL ====== MySQL dà la possibilità di criptare i dati inseriti in un campo MySQL tramite le funzioni AES_ENCRYPT() e AES_DECRYPT(). Vediamo più nel dettaglio cosa fanno queste funzioni: * AES_ENCRYPT() cripta una string a e restituisce una stringa binaria * AES_DECRYPT() decripta la stringa binaria criptata e restituisce la stringa originale Gli argomenti in input possono essere di qualunque lunghezza. Se un argomento è NULL, il risultato della funzione è NULL. La lunghezza della stringa criptata può essere calcolata con la formula 16 X ( trunc ( string_length / 16 ) + 1 ) ===== Un esempio ===== Supponiamo di voler creare una tabella in cui dobbiamo registrare i campi criptati name e address. Senza crittografia i due campi sarebbero il primo del tipo VARCHAR(50) ed il secondo del tipo VARCHAR(100). Useremo come chiave la stringa 'IL_key'. Creiamo la tabella con il comando CREATE TABLE IF NOT EXISTS `user` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` varbinary(100) DEFAULT NULL, `address` VARBINARY(200) NOT NULL , PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1; Passiamo ora ad inserire i dati, mediante la funzione INSERT into user (name, address) VALUES (AES_ENCRYPT('Michele', 'IL_key'),AES_ENCRYPT('via dei Gladioli', 'IL_key')); Per leggere i campi usiamo invece il comando SELECT AES_DECRYPT(name, 'IL_key'), AES_DECRYPT(address, 'IL_key') from user;