Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以在MySQL中搜索由CakePHP加密的数据吗?_Php_Mysql_Cakephp_Cakephp 3.x_Encryption Symmetric - Fatal编程技术网

可以在MySQL中搜索由CakePHP加密的数据吗?

可以在MySQL中搜索由CakePHP加密的数据吗?,php,mysql,cakephp,cakephp-3.x,encryption-symmetric,Php,Mysql,Cakephp,Cakephp 3.x,Encryption Symmetric,我正在构建一个应用程序,其中包括使用CakePHP的安全实用程序加密的PII(例如电话号码)。我已经通过@ndm在自定义数据库之后构建了代码模式——因此AES-256加密在应用程序级别进行,然后传递到MySQL数据库。这是伟大的工作,但我不知道如何实现搜索 我知道我无法进行片段比较(例如%%),但我希望可以搜索精确匹配。但是,由于Security::encrypt每次使用时都返回不同的字符串,因此以下操作将不起作用: $query = $this->Users->find('all'

我正在构建一个应用程序,其中包括使用CakePHP的安全实用程序加密的PII(例如电话号码)。我已经通过@ndm在自定义数据库之后构建了代码模式——因此AES-256加密在应用程序级别进行,然后传递到MySQL数据库。这是伟大的工作,但我不知道如何实现搜索

我知道我无法进行片段比较(例如%%),但我希望可以搜索精确匹配。但是,由于
Security::encrypt
每次使用时都返回不同的字符串,因此以下操作将不起作用:

$query = $this->Users->find('all')
    ->where([
        'telephone' => Security::encrypt($search, Security::getSalt())
    ]);
我搜索了类似的问题,其中公认的答案是为每个加密列创建包含字符串哈希的附加列(在其他地方称为a)。我不希望修改我的数据库,但如果这是唯一的解决方案,我可以这样做


任何建议,谢谢

对,做一个散列搜索是唯一的方法。否则,您必须获取所有行,并通过解密电话数据并将其与明文搜索条件进行比较来逐个搜索。对,为搜索创建哈希是唯一的方法。否则,您必须获取所有行,并通过解密电话数据并将其与明文搜索条件进行比较来逐个搜索。