通配符搜索MySQL数据库中的加密数据?

use*_*205 7 php mysql security encryption encode

我正在构建一个小型Web应用程序,它将为每个插入的人保存大约10条信息.由于数据保护,大部分信息必须加密.

使用CodeIgniter框架和CodeIgniter加密类,我可以在将数据存储到数据库之前对应用程序端的信息进行编码.CodeIgniter加密类使用PHP的mcrypt函数和AES_256密码.

我遇到的问题是我需要允许应用程序的用户搜索使用通配符搜索存储的信息,也可能在以后通过API搜索.

任何机构都会遇到类似问题的解决方案.我已经阅读了有关MySQL AES_ENCRYPT和AES_DECRYPT的内容,但是他们仍然需要在纯文本中来回传递密钥,我不愿意这样做.

我目前的结论是,如果我希望继续这条路线,那么每次进行搜索时,全表解密是我唯一的解决方案(显然不是很好).

Tom*_*rdt 6

好吧,如果不首先解码它就不能搜索解密文本,这是事实.

但是,这并不意味着没有办法解决这个问题.例如,您可以对数据进行反向索引,并使用散列(sha1,md5,crc32,pick one)作为用于搜索的键.所有你需要做的就是散列你正在使用的搜索词,在索引中查找它们并检索匹配的任何记录,这只是表的一小部分而不是整个事物.

通过散列数据(使用盐!),您可以避免以不安全的方式存储数据,同时您仍然可以搜索数据,因为您为它创建了索引.在确定哪些文档匹配之前,不需要解密.