2016-07-04 12 views
0

私のカラムlib_questionのデータは、AES_ENCRYPTを使用して暗号化されています。今私は、この列がユーザーが入力した特定のエントリが好きなテーブルからレコードを検索したいと思っています。私はこれを試してみましたが、それは動作しません:暗号化されたデータでLIKE検索を実行するにはどうすればよいですか?

select id_question 
from question 
where lib_question like CONCAT('%',AES_ENCRYPT('contribuer', HEX('AVtr34ENMG')),'%'); 

私はアプリケーションを介してlib_question列に対応するフィールドに単語contribuerを入力することを覚えています。

どのようにLIKE文を作成するのですか?

答えて

2

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%'; 
-1

暗号化されたテキストを最初にデコードせずに検索することはできませんが、検索した単語を暗号化して同様の暗号化を見つけることができます。理論的には実行可能

関連する問題