我遇到了一个客户要求,为了保密,我必须在大型数据库中加密字段 first_name、last_name、phone_number、username。
但是,如果我使用 PHP 函数加密这些字段,我将无法对这些数据执行 SQL select ( LIKE , =
) 搜索。是否可以在没有太多性能损失的情况下使用 AES_ENCRYPT
或任何其他快速方法来实现这一目标?
最佳答案
您可能对 CipherSweet 感兴趣,它在 PHP 中提供安全的 authenticated encryption 、 key 分离和加密搜索(用于 SQL 数据库)。
CipherSweet 不使用 MySQL 的 AES_ENCRYPT()
函数。事实上,如果加密数据的目的是将数据从数据库服务器中隐藏起来作为纵深防御策略,那么您永远都不想依赖 MySQL 的 AES_ENCRYPT()
函数。
相反,CipherSweet 支持两个开箱即用的后端:
使用 CipherSweet,您不会获得
LIKE
或正则表达式支持。相反,它使用一种称为 blind indexing 的策略(类似于经常使用的 LIKE
运算符)。关于php - 加密mysql数据库中的可搜索字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52661638/