AES_ENCRYPT 和 AES_DECRYPT 在 MYSQL 中发挥作用

AES_ENCRYPT and AES_DECRYPT functions in MYSQL

我正在尝试 MYSQL 8.0.19 中的函数 AES_ENCRYPT 和 AES_DECRYPT。 当我 运行 SELECT AES_ENCRYPT('foo','test'); 我得到 0x429292F7734FFE002C4E5B11239FD3A4,但是当我 运行 SELECT AES_DECRYPT('0x429292F7734FFE002C4E5B11239FD3A4','test'); 我得到 0x(而不是 'foo')。 为什么 AES_DECRYPT 函数不起作用? 谢谢你们。亲切的问候。数控

aes_decrypt()的输入需要是二进制字符串而不是字符串。由于 aes_decrypt() 的 return 值也是二进制字符串,您可能需要将其转换为字符串。

要么不引用输入。

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);