РЕДАКТИРОВАТЬ РЕШЕНО:
Я установил 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';
запрос и выборка работают хорошо и получают нормальный результат , только расшифрованные символы lat и lng дают мне NULL
Я также пытался использовать параметры execute безhh, например: id,: key, то же самое, что и в phpmyadmin, но все равно то же сообщение об ошибке.
Я также попытался SET @@session.block_encryption_mode = 'aes-256-cbc';
вместо.