use*_*206 5 mysql encryption select sql-like
如果字段是AES_ENCYPTED,我将如何使用WHERE和LIKE serach执行Mysql SELECT?
例:
SELECT AES_DECRYPT(place,'"+salt+"'),AES_DECRYPT(web_address,'"+salt+"')
FROM access
WHERE place= LIKE '%(AES_ENCRYPT('"+searchStr+"','"+salt+"'))',%')
Run Code Online (Sandbox Code Playgroud)
基本上,在加密列上执行搜索,并在两端使用LIKE通配符 $searchStr
小智 6
我一直在寻找一种简单的方法来将 SELECT LIKE 用于 MySQL 的 AES_ENCRYPTED 字段。效果最好的一种是:
SELECT * FROM table
WHERE CONVERT(AES_DECRYPT(`haystack`,'key') USING utf8) LIKE '%needle%'
Run Code Online (Sandbox Code Playgroud)
我已经使用 PHP 5 在 MySQL 5 上对此进行了测试。
这在处理数千行时运行良好,但由于解密和转换,对于非常大的表可能不理想。
这是基本的 PHP 代码:
$key = md5("yourchosenkey".$salt);
$query = "SELECT * FROM ".$tableName." ".
"WHERE CONVERT(AES_DECRYPT(`haystack`,'".$key."') USING utf8) ".
"LIKE '%".addslashes($needle)."%'";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9156 次 |
| 最近记录: |