我正在构建一个小的web应用程序,它将为每个插入的人保存大约10条信息。由于数据保护,这些信息的大部分必须加密。
使用CodeIgniter框架和CodeIgniter加密类,我可以在将信息存储到数据库之前对应用程序端的信息进行编码。CodeIgniter加密类使用PHP函数和AES_256密码。
我遇到的问题是,我需要允许应用程序的用户使用通配符搜索来搜索存储的信息,也可以在以后通过API进行搜索。
任何人都会遇到类似问题的解决方案。我读过关于MySQL、AES_ENCRYPT和AES_DECRYPT的文章,但它们仍然需要以纯文本形式来回传递密钥,我不愿意这样做。
我目前的结论是,如果我希望继续这条路线,那么每次进行搜索时,全表解密是我唯一的解决方案(显然不是很好)。
发布于 2013-01-04 18:27:51
嗯,你不能在解密后的文本中搜索,除非先解码它,这是真的。
然而,这并不意味着没有办法解决这个问题。例如,您可以为您的数据创建一个inverted index,并使用散列(sha1、md5、crc32、pick one)作为搜索关键字。然后,您所要做的就是对正在使用的搜索词进行散列,在索引中查找它们,并检索任何匹配的记录,这将只是表的一小部分,而不是整个内容。
通过对数据进行散列(使用盐!),您可以避免以不安全的方式存储数据,同时仍然可以搜索数据,因为您为数据建立了索引。在您真正确定哪些文档匹配之前,不需要解密。
https://stackoverflow.com/questions/14155221
复制相似问题