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

时间:2018-10-05 08:40:18

标签: php mysql encryption

我已经达到一个客户要求,我必须对大型数据库中的字段first_name,last_name,phone_number,username进行加密,以确保机密性。

但是,如果我使用PHP函数加密这些字段,则无法对这些数据执行SQL选择(LIKE , =)搜索。是否可以使用AES_ENCRYPT而不会造成很大的性能损失,或者可以通过其他任何快速的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可能对CipherSweet感兴趣,该authenticated encryption在PHP中提供安全的libsodium,密钥分离和加密搜索(用于SQL数据库)。

CipherSweet不使用MySQL的AES_ENCRYPT()函数。实际上,如果加密数据的目的是将其从数据库服务器中隐藏起来作为深度防御策略,那么您永远不需要依靠MySQL的AES_ENCRYPT()函数。

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

  • FIPSCrypto (仅用于FIPS 140-2认证应用程序(AES,SHA2,PBKDF2,HMAC等)的已批准算法)
  • ModernCrypto ,它使用blind indexing(更快,更安全,但与仅具有OpenSSL的现有系统不兼容)。

使用CipherSweet,您将无法获得LIKE或正则表达式支持。相反,它使用称为conditionalPanel()的策略(类似于通常使用LIKE运算符的方式。)