我想比较用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