Mysql 与AES_解密不起作用的查询类似
我有一个表,其中包含几个加密的Mysql 与AES_解密不起作用的查询类似,mysql,sql,aes,Mysql,Sql,Aes,我有一个表,其中包含几个加密的blob字段。数据用AES\u ENCRYPT加密。我现在正试图从这些字段生成ajax建议 以下查询不起作用 SELECT id , AES_DECRYPT(first_field,'secret_salt') , AES_DECRYPT(second_field,'secret_salt') FROM table WHERE ( AES_DECRYPT(first_field,'secret
blob
字段。数据用AES\u ENCRYPT
加密。我现在正试图从这些字段生成ajax建议
以下查询不起作用
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
在过去的三天里,我一直在寻找和尝试。下面的查询确实有效,但不符合我的需要
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')%"
试用
WHERE CAST(AES_DECRYPT(first_field, 'secret_salt') AS CHAR) LIKE '%foo%'
为了调试,我建议使用一些常量进行硬编码。拉出一个加密字段并编写一个查询,如
选择AES_DECRYPT('kjhsjdkha','secret')
;检查它是否返回您期望的结果。我刚刚删除了旧数据并插入了新数据,我开始工作正常,它处于开发阶段,所以我只有一些记录,所以没有问题AES_加密版本无法工作;每次对相同的数据进行加密时,都会得到不同的结果。AES_解密版本至少有可能工作。然而,处理过程极其昂贵。您应该尽可能避免在加密列中搜索。“不起作用”不是有效的问题描述/分析。这救了我一命。我不知道解密后你可能不得不转换成char。呸。