2
我有一个包含几个ENCRYPTED blob
字段的表。数据用AES_ENCRYPT
加密。我现在试图从这些字段中生成Ajax建议。与AES_DECRYPT不起作用的LIKE查询
下面的查询不起作用
SELECT id
, AES_DECRYPT(first_field,'secret_salt')
, AES_DECRYPT(second_field,'secret_salt')
FROM table
WHERE (AES_DECRYPT(first_field,'secret_salt') "%user search value%"
OR AES_DECRYPT(second_field,'secret_salt') LIKE "%user search value%"
)
AND status = 1
我一直在寻找,并试图在过去的3天。以下查询不起作用,但不是根据我的需要
SELECT id
, AES_DECRYPT(first_field,'secret_salt')
, AES_DECRYPT(second_field,'secret_salt')
FROM table
WHERE status = 1
我发现此查询,但它也不起作用。
SELECT id, AES_DECRYPT(first_field,'secret_salt'), AES_DECRYPT(second_field,'secret_salt')
FROM table
WHERE first_field LIKE "%AES_ENCRYPT('user search value','secret_salt')%"
要调试我建议在一些常数硬编码。拉出一个加密的字段并写入一个查询,比如'SELECT AES_DECRYPT('kjhsjdkha','secret')';检查它是否会返回您所期望的。 – 2012-02-25 15:36:35
我刚刚删除旧数据并插入了新数据,并且我开始工作正常,它处于开发阶段,所以我只有几条记录,所以没有问题 – user612703 2012-02-25 17:52:19
AES_ENCRYPT版本不起作用;每次加密相同的数据时,都会得到不同的结果。 AES_DECRYPT版本至少有一定的工作机会。但是,处理过程非常昂贵。您应该避免必须尽可能在加密列中进行搜索。 – 2012-02-25 21:59:24