AES_ENCRYPTとLIKE演算子の利用
AES_ENCRYPTされた文字列の曖昧検索をしたいと思っています。AES_ENCRYPTで暗号化した文字列をBLOB型のフィールドに書き込んでいますが、SELECT文で文字列を抽出時、完全に一致する文字列しか抽出できません。
テーブル名:
member
フィールド名:
id blob
name blob
email blob
テーブルに登録されている文字列:
id name email
----------------------------------------
0001, dokumori, dm@example.com
0002, blahblah, blah@example.com
0003, dokublah, db@example.com
(上記は全てAES_ENCRYPTされているものとします)
そして、以下のコマンドを走らせても、該当が見つかりません:
SELECT * FROM member WHERE name LIKE AES_ENCRYPT ('%doku%','password');
以下のようにすると、当然ですが、該当するレコードは表示されます:
SELECT * FROM member WHERE name = AES_ENCRYPT ('dokumori','password');
AES_ENCRYPTに関しては、文献自体が少ないようで、なかなか答えが見つかりません。この件に関してもしご存じでしたらアドバイスをお願いします。