Mysql block_encryption_mode cbc вызывает ошибку при выборе, выборке - PullRequest
0 голосов
/ 03 сентября 2018

РЕДАКТИРОВАТЬ РЕШЕНО:

Я установил 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'; вместо.

...