Crittografia AES con Doctrine2 e MySQL

AES_ENCRYPT ed AES_DECRYPT utili per crittografare e decrittografare in Doctrine2

Doctrine2 non supporta nativamente tutte le funzioni MySQL, tra queste ci sono le funzioni AES_ENCRYPT ed AES_DECRYPT utili per crittografare e decrittografare campi definibili “sensibili” così come abbiamo illustrato nel nostro precedente articolo AES Advanced Encryption Standard in MYSQL e PHP per campi sensibili.

Doc AES_ENCRYPT - https://dev.mysql.com/doc/refman/en/encryption-functions.html#function_aes-encrypt
Doc AES_DECRYPT - https://dev.mysql.com/doc/refman/en/encryption-functions.html#function_aes-decrypt

Per ovviare a questa “mancanza” di Doctrine2 possiamo implementare due procedure “custom” per poter utilizzare queste due funzioni MySQL.

Creiamo una prima classe PHP in un file denominato AesEncryptWithInitVector.php

Ed una seconda classe PHP in un file denominato AesDecryptWithInitVector.php

Successivamente andiamo a registrare queste due classi in Doctrine2 in modo che si possano utilizzare nelle query. Per far ciò basta andare nelle configurazioni di Doctrine2 ed aggiungere nelle string_functions quanto segue:

Terminata la configurazione di Doctrine2 possiamo decidere che tipo di crittografia AES utilizzare andando a specificarlo eseguendo questa query dove decidiamo di utilizzare aes-128-cbc:

SET SESSION block_encryption_mode = 'aes-128-cbc'


Se utlizziamo Zend Framework 2/3 alias Laminas o qualsiasi altro framework PHP è utile definire il tipo di crittografia AES adoperata da Doctrine2 nel bootstrap come in questo esempio dove decidiamo di utilizzare aes-128-cbc:

Scrivi il tuo commento

  • hozyowete <a href=http://buycialis.homes>best price for generic cialis</a> aka cheating