Mysql aes_加密数据比较



我想比较用mysql aes_encrypt()加密的数据与从我的应用程序发送的加密数据

MySQL version: 10.2.43-MariaDB
Test data: 'abc'
password: '123'
encrypted data sent from my app: 0x911ff5b9a15aae9b52e7e9fde75315b1 

测试表包含一条记录,列varbinary50包含使用mysql的aes_encrypt()加密的数据:

CREATE TABLE `tests` (
`test_id` int(11) NOT NULL,
`varbinary50` varbinary(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `tests`
--
INSERT INTO `tests` (`test_id`, `varbinary50`) VALUES
(6, 0x911ff5b9a15aae9b52e7e9fde75315b1);

由于varbinary50恰好包含值'0x911ff5b9a15aae9b52e7e9fde75315b1',我希望下面的查询返回1;而是0

select varbinary50='0x911ff5b9a15aae9b52e7e9fde75315b1' from tests
谁能告诉我我做错了什么?TIA

解决方案:将十六进制应用于varbinary50并删除"0x"来自数据的前缀

select lower(hex(varbinary50))='911ff5b9a15aae9b52e7e9fde75315b1' from tests

最新更新