Функции AES_ENCRYPT и AES_DECRYPT в MYSQL - PullRequest
1 голос
/ 01 апреля 2020

Я пробовал функции AES_ENCRYPT и AES_DECRYPT в MYSQL 8.0.19. Когда я запускаю SELECT AES_ENCRYPT('foo','test');, я получаю 0x429292F7734FFE002C4E5B11239FD3A4, но когда я запускаю SELECT AES_DECRYPT('0x429292F7734FFE002C4E5B11239FD3A4','test');, я получаю 0x (вместо 'foo'). Почему функция AES_DECRYPT не работает? Спасибо вам всем. С уважением. N C

1 Ответ

2 голосов
/ 01 апреля 2020

Ввод aes_decrypt() должен быть двоичной строкой, а не символьной строкой. Поскольку возвращаемое значение aes_decrypt() также является двоичной строкой, вам может потребоваться привести его к символьной строке.

Либо не заключайте в кавычки ввод.

SELECT cast(aes_decrypt(0x429292F7734FFE002C4E5B11239FD3A4, 'test') AS char);

Или удалите начальный '0x' префикс и x.

SELECT cast(aes_decrypt(x'429292F7734FFE002C4E5B11239FD3A4', 'test') AS char);

Или удалить начальные '0x' и unhex() в строке (символа).

SELECT cast(aes_decrypt(unhex('429292F7734FFE002C4E5B11239FD3A4'), 'test') AS char);
...