首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL数据库中搜索加密数据的通配符?

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

Stack Overflow用户
提问于 2013-01-04 18:21:33
回答 1查看 3.1K关注 0票数 7

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

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

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

任何人都会遇到类似问题的解决方案。我读过关于MySQL、AES_ENCRYPT和AES_DECRYPT的文章,但它们仍然需要以纯文本形式来回传递密钥,我不愿意这样做。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-04 18:27:51

嗯,你不能在解密后的文本中搜索,除非先解码它,这是真的。

然而,这并不意味着没有办法解决这个问题。例如,您可以为您的数据创建一个inverted index,并使用散列(sha1、md5、crc32、pick one)作为搜索关键字。然后,您所要做的就是对正在使用的搜索词进行散列,在索引中查找它们,并检索任何匹配的记录,这将只是表的一小部分,而不是整个内容。

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14155221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档