美团二面:加密后的数据如何进行模糊查询??被问懵了。。
肉眼品世界
共 3910字,需浏览 8分钟
·
2022-09-17 21:25
如何对加密后的数据进行模糊查询
沙雕做法(不动脑思考直男的思路,只管实现功能从不深入思考问题) 常规做法(思考了查询性能问题,也会使用一些存储空间换性能等做法) 超神做法(比较高端的做法从算法层面上思考)
沙雕做法
将所有数据加载到内存中进行解密,解密后通过程序算法来模糊匹配 将密文数据映射一份明文映射表,俗称tag表,然后模糊查询tag来关联密文数据
沙雕一
DES
来举例,13800138000
加密后的串HE9T75xNx6c5yLmS5l4r6Q==
占24
个字节。条数 | Bytes | MB |
Out of memory
,这样做如果数据少只有几百、几千、几万条时是完全可以这样做的,但是数据量大就强烈不建议了。常规做法
在数据库实现加密算法函数,在模糊查询的时候使用 decode(key) like '%partial%
对密文数据进行分词组合,将分词组合的结果集分别进行加密,然后存储到扩展列,查询时通过 key like '%partial%'
常规一
常规二
ningyu1
使用4个字符为一组的加密方式,第一组ning ,第二组ingy ,第三组ngyu ,第四组gyu1 … 依次类推。
key like “%partial%”
查库。13800138000
加密前占11个字节,加密后的串HE9T75xNx6c5yLmS5l4r6Q==
占24个字节,增长是2.18倍,所以一个优秀的算法是多么的重要,能为公司节省不少成本,但是话又说回来算法工程师的工资也不低,所以我也不知道是节省成本还是增加成本,哈哈哈…你们自己算吧。淘宝密文字段检索方案:https://open.taobao.com/docV3.htm?docId=106213&docType=1 阿里巴巴文字段检索方案:https://jaq-doc.alibaba.com/docs/doc.htm?treeId=1&articleId=106213&docType=1 拼多多密文字段检索方案:https://open.pinduoduo.com/application/document/browse?idStr=3407B605226E77F2 京东密文字段检索方案:https://jos.jd.com/commondoc?listId=345
超神做法
数据库中字符数据的模糊匹配加密方法:https://www.jiamisoft.com/blog/6542-zifushujumohupipeijiamifangfa.html
一种基于BloomFilter的改进型加密文本模糊搜索机制研究:http://kzyjc.cnjournals.com/html/2019/1/20190112.htm 支持快速查询的数据库如何加密:https://www.jiamisoft.com/blog/5961-kuaisuchaxunshujukujiami.html 基于Lucene的云端搜索与密文基础上的模糊查询:https://www.cnblogs.com/arthurqin/p/6307153.html
云存储中一种支持可验证的模糊查询加密方案:http://jeit.ie.ac.cn/fileDZYXXXB/journal/article/dzyxxxb/2017/7/PDF/160971.pdf
总结
推荐阅读:
评论