大家好,我是程序员三金。
相信大家随着业务的推进,一定会遇到这样一个问题: 不可逆加密内容如何做模糊查询?
我举一个例子相信大家就能够更好的明白我在说什么:
比如:我们使用MD5加密算法加密字符串 “1234567”之后,把加密得到的字符串“FCEA920F7412B5DA7BE0CF42B8C93759”存储在数据库中
此时如果我们想进行模糊查询,输入“1234”的时候,加密得到的字符串是:81DC9BDB52D04DC20036DBD8313ED055。
这两串毫不相干的加密后字符串肉眼可见的无法进行模糊匹配。
那我们对敏感信息进行加密之后,要如何做加密内容后的模糊查询呢?
「分词加密
PART1
模糊查询」
在这里我们向大家介绍一个比较巧妙的思路:对分词进行加密
既然我们没有办法对:”abcdef“的加密内容做模糊查询,那么我们就提前拆分”abcdef“。存储拆出来的分词的加密内容,在数据库中的组织形式为:
那么在模糊查询的时候,我们就可以通过”abc“的加密内容模糊查询到abcdef
通过这种形式,我们就实现了加密字段的模糊查询。
目前这种方式是一种比较成熟的加密内容模糊查询的方式,国内很多公司都在采用这种解决方案,例如淘宝。在淘宝的官方文档中我们可以看到淘宝对这种方案的简单介绍。
「建立映射表
PART1
模糊查询」
第二种解决方案就是建立映射表。
思路与存储分词加密结果类似。我们建立一张加密内容与非加密内容的映射表,通过映射的关系来进行模糊查询。
其实就是在数据库中暴漏一些信息来方便模糊查询。
相比较之下,这种方案的安全性是不如存储分词加密成果的。
相信通过我的介绍,你已经大致了解如何做”不可逆加密内容模糊查询“。关注我,带你了解更多计算机干货。