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