可以在MySQL中搜索由CakePHP加密的数据吗?
我正在构建一个应用程序,其中包括使用CakePHP的安全实用程序加密的PII(例如电话号码)。我已经通过@ndm在自定义数据库之后构建了代码模式——因此AES-256加密在应用程序级别进行,然后传递到MySQL数据库。这是伟大的工作,但我不知道如何实现搜索 我知道我无法进行片段比较(例如%%),但我希望可以搜索精确匹配。但是,由于可以在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'
Security::encrypt
每次使用时都返回不同的字符串,因此以下操作将不起作用:
$query = $this->Users->find('all')
->where([
'telephone' => Security::encrypt($search, Security::getSalt())
]);
我搜索了类似的问题,其中公认的答案是为每个加密列创建包含字符串哈希的附加列(在其他地方称为a)。我不希望修改我的数据库,但如果这是唯一的解决方案,我可以这样做
任何建议,谢谢 对,做一个散列搜索是唯一的方法。否则,您必须获取所有行,并通过解密电话数据并将其与明文搜索条件进行比较来逐个搜索。对,为搜索创建哈希是唯一的方法。否则,您必须获取所有行,并通过解密电话数据并将其与明文搜索条件进行比较来逐个搜索。