РЕДАКТИРОВАТЬ РЕШЕНО:
Я поставил block_encryption_mode = 'aes-256-cbc'
внутри конфига mysql, теперь проблема, кажется, решена …
РЕДАКТИРОВАТЬ КОНЕЦ
У меня нет проблем с вставкой строк с SET block_encryption_mode = 'aes-256-cbc';
Но на SELECT я получаю странную ошибку вроде:
Uncaught PDOException: SQLSTATE [HY000]: общая ошибка в /var/www/vhosts/…/httpdocs/templates/sidebar.php:33 трассировки стека: # 0 /var/www/vhosts/…/httpdocs/templates /sidebar.php(33): PDOStatement-> fetch ()
Mysql версия: 5.7.23
Пример укороченного кода:
$securekey02 = sodium_hex2bin($securekey);
$userdata = $X['dbh']->prepare("SET block_encryption_mode = 'aes-256-cbc';
SELECT
AES_DECRYPT(l.lat, :key, l.latnonce) AS lat, AES_DECRYPT(l.lng, :key, l.lngnonce) AS lng
FROM
userdata u
LEFT JOIN
location l
ON u.id = l.id
WHERE
u.id = :id
LIMIT 1
");
$userdata -> execute(array(
':id'=> $_SESSION['qAsUserId3'],
':key'=>$securekey02
));
$userdata = $userdata -> fetch();
Я попытался выполнить этот запрос внутри phpmyadmin без проблем, получив правильные расшифрованные значения lat и lng.
Witouth SET block_encryption_mode = 'aes-256-cbc';
запрос и выборка работают хорошо и получают нормальный результат, только расшифрованный лат и lng дает мне NULL
Я также попытался использовать параметры без пароля, например: id,: key, такие же, как в phpmyadmin, но все равно то же сообщение об ошибке.
Я тоже пробовал SET @@session.block_encryption_mode = 'aes-256-cbc';
вместо.
Задача ещё не решена.
Других решений пока нет …