Php mysql数据库中可搜索字段的加密

Php mysql数据库中可搜索字段的加密,php,mysql,encryption,Php,Mysql,Encryption,我遇到了一个客户要求,我必须在一个大型数据库中加密字段first_name、last_name、phone_number、username以确保机密性 但是,如果我使用PHP函数加密这些字段,我就无法对这些数据执行SQL select(LIKE,=)搜索。是否可以使用AES\u ENCRYPT而不会造成太多性能损失,或者使用任何其他快速方法来实现这一点 您可能会感兴趣,它在PHP中提供安全、密钥分离和加密搜索(用于SQL数据库) CipherSweet不使用MySQL的AES\u ENCRYPT

我遇到了一个客户要求,我必须在一个大型数据库中加密字段first_name、last_name、phone_number、username以确保机密性


但是,如果我使用PHP函数加密这些字段,我就无法对这些数据执行SQL select(
LIKE,=
)搜索。是否可以使用
AES\u ENCRYPT
而不会造成太多性能损失,或者使用任何其他快速方法来实现这一点

您可能会感兴趣,它在PHP中提供安全、密钥分离和加密搜索(用于SQL数据库)

CipherSweet不使用MySQL的
AES\u ENCRYPT()
函数。事实上,如果加密数据的目的是为了向数据库服务器隐藏数据作为一种纵深防御策略,那么您永远都不想依赖MySQL的
AES\u ENCRYPT()
函数

相反,CipherSweet支持两个开箱即用的后端:

  • FIPSCrypto仅使用FIPS 140-2认证应用(AES、SHA2、PBKDF2、HMAC等)中批准使用的算法
  • ModernCrypto使用(速度更快、更安全,但与只有OpenSSL的现有系统不太兼容)

使用CipherSweet,您不会像或regex一样获得
支持。相反,它使用了一种称为的策略(类似于
LIKE
操作符的常用用法)。

这种加密需要在PHP中进行吗?看看MySQL的rest加密解决方案,它基本上对存储在磁盘上的数据进行加密,但对PHP代码是透明的。我们需要的是防止拥有sql密码的人不通过运行MySQL命令行读取这些值,phpmyadmin或adminer任何类似的工具。这听起来是一个问题,应该通过适当的数据库访问权限来解决。但话说回来,我不知道你的确切情况。只是加密总是有可搜索性作为一种折衷…我通常在这种情况下做的是创建具有有限访问规则的用户;并且不允许访问某些表,例如:customer(包含Lead数据)等加密数据搜索的实用技术。。基本上,创建一个搜索索引表,其中包含加密搜索文档中存在的加密关键字(也可以是单个字符或数字)以及您也加密的位置。。这种方法的唯一问题是,如果这些字段中的任意一个发生更改或添加了更多数据,则需要更新搜索索引