Strumenti Utente



criptare_dati_mysql

Questa è una vecchia versione del documento!


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 \cdot \left( trunc \left( string\_length / 16 \right) + 1 \right)$$

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).

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;

criptare_dati_mysql.1586600434.txt.gz · Ultima modifica: 2020/04/11 12:20 (modifica esterna)

Facebook Twitter Google+ Digg Reddit LinkedIn StumbleUpon Email