mySQL 暗号化した値の検索(AES_ENCRYPT, AES_DECRYPT)

暗号化・復号化。また暗号化した値をlike検索したい。

作成日:2020-10-16, 更新日:2020-10-16

基本

▼暗号化

HEX(AES_ENCRYPT(値, 暗号化する際の鍵))

▼復号化

AES_DECRYPT(UNHEX(値), 暗号化したときの鍵)

▼like検索

AES_DECRYPT(UNHEX(値), 暗号化したときの鍵) like 値

サンプル

insert, update

値を暗号化して格納

insert ~省略~ ( ~省略~ HEX(AES_ENCRYPT("さんぷる", "sample_key")), ~省略~ );

select

復号化した状態で検索を行う

select AES_DECRYPT(UNHEX(`sample_colmns`), "sample_key")
from `sample_table`
where AES_DECRYPT(UNHEX(`sample_colmns`), "sample_key") like "%さん%"; 

めも:phpとの連携

PHP、mySQLのバージョンによっては大丈夫だと思う
※今回は、バージョンが古くて連携する方法を見つけることができなかった

希望としては・・・PHP側で暗号化して、DBに値を格納したかった