Strumenti Utente



indice

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;

indice.txt · Ultima modifica: 2013/07/08 10:00 da mickele

Facebook Twitter Google+ Digg Reddit LinkedIn StumbleUpon Email