如何使用加密数据进行LIKE搜索?

phe*_*mix 2 mysql

我的专栏 lib_question 中的数据是使用 AES_ENCRYPT 加密的。现在我想从表中搜索记录,其中该列类似于用户输入的特定条目。我尝试了这个,但它不起作用:

select id_question 
from question 
where lib_question like CONCAT('%',AES_ENCRYPT('contribuer', HEX('AVtr34ENMG')),'%');
Run Code Online (Sandbox Code Playgroud)

我记得通过应用程序将“contribuer”一词输入到与 lib_question 列对应的字段中。

那么如何做出LIKE语句呢?

trs*_*trs 6

AES_ENCRYPT 将在输入字符串周围添加填充(https://dev.mysql.com/doc/refman/5.6/en/encryption-functions.html#function_aes-encrypt),这意味着您的比较将永远不会匹配加密字符串。

您是否尝试过比较解密的值?这样应该比较靠谱。

select id_question 
from question 
where AES_DECRYPT(lib_question, HEX('AVtr34ENMG')) like '%contribuer%';
Run Code Online (Sandbox Code Playgroud)