通常數(shù)據(jù)庫自帶有加解密函數(shù),如MySQL的PASSWORD ,MD5,AES_ENCRYPT等等。對于密碼等信息可以采用單向加密,驗(yàn)證的時(shí)候用同樣的方式加密匹配即可。而對于需要比對原內(nèi)容的模糊查詢,則需要使用雙向加密,也即可以解密,在MySQL可以使用自帶的AES加密。
在嘗試過程中遇到了這樣的錯誤:Error Code: 1366. Incorrect string value: '\x88lO1\xA2\x12' for column ...
說明使用的姿勢不正確,可以看下面MySQL使用AES_ENCRYPT()/AES_DECRYPT()加解密的正確姿勢
比較推薦其中的方式2來處理。
完成存儲加密,讀取解密后,我們就可以實(shí)現(xiàn)模糊搜索了:
where AES_DECRYPT(UNHEX(column_name),'key') like '%';
使用函數(shù)還原原始內(nèi)容然后使用like關(guān)鍵字匹配即可實(shí)現(xiàn)模糊搜索。