MYSQL中的AES_ENCRYPT和AES_DECRYPT函数

时间:2020-04-01 19:22:36

标签: mysql aes

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

1 个答案:

答案 0 :(得分:2)

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