首页 > 解决方案 > MYSQL 中的 AES_ENCRYPT 和 AES_DECRYPT 函数

问题描述

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

标签: mysqlaes

解决方案


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

要么不引用输入。

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

或删除前导'0x'前缀 an x

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

或删除(字符)字符串的前导'0x'unhex()

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

推荐阅读