Я шифрую столбцы базы данных MySQL и для этого использую AES_ENCRYPT()
.
Но я беспокоюсь о вызове функции шифрования или дешифрования несколько раз. Есть ли способ, которым я могу это предотвратить?
Я хочу использовать триггер, но что я должен добавить в оператор IF? Можно ли как-нибудь проверить, зашифрован столбец или нет?
Это код, который шифрует столбцы:
UPDATE `data1` SET `FirstName`=AES_ENCRYPT(FirstName,'passw')
,`LastName`=AES_ENCRYPT(LastName,'passw')
,`Address`=AES_ENCRYPT(Address,'passw')
,`City`=AES_ENCRYPT(City,'passw')
, и этот код выполняет расшифровку:
UPDATE `data1` SET `FirstName`=AES_DECRYPT(FirstName,'passw')
,`LastName`=AES_DECRYPT(LastName,'passw')
,`Address`=AES_DECRYPT(Address,'passw')
,`City`=AES_DECRYPT(City,'passw')
Я думаю, что правильно делать это с помощью триггера:
CREATE TRIGGER trigger_name
{BEFORE} {UPDATE}
ON table_name FOR EACH ROW
If (check if it is encrypted)
//dont encrypt
if(check if it is not encrypted)
//dont decrypt