专栏名称: 数据分析与开发
伯乐在线旗下账号,分享数据库相关技术文章、教程和工具,另外还包括数据库相关的工作。偶尔也谈谈程序员人生 :)
目录
相关文章推荐
51好读  ›  专栏  ›  数据分析与开发

加密后的数据如何进行模糊查询?今天面了7个,没一个能答上来的!

数据分析与开发  · 公众号  · 数据库  · 2024-11-27 08:50

正文

请到「今天看啥」查看全文


一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间,用DES来举例, 13800138000 加密后的串 HE9T75xNx6c5yLmS5l4r6Q== 占24个字节。

轻则上百兆,重则上千兆,这样分分钟给应用程序整成Out of memory,这样做如果数据少只有几百、几千、几万条时是完全可以这样做的,但是数据量大就强烈不建议了。

沙雕二

我们再来看第二个做法,将密文数据映射一份明文映射表,然后模糊查询映射表来关联密文数据,what???!!!那我们为什么要对数据加密呢,直接不加密不是更好么!

我们既然对数据加密肯定是有安全诉求才会这样做,增加一个明文的映射表就违背了安全诉求,这样做既不安全也不方便完全是脱裤子放x,多此一举,强且不推荐。

常规做法

我们接下来看看常规的做法,也是最广泛使用的方法,此类方法及满足的数据安全性,又对查询友好。

  • 在数据库实现加密算法函数,在模糊查询的时候使用 decode(key) like '%partial%
  • 对密文数据进行分词组合,将分词组合的结果集分别进行加密,然后存储到扩展列,查询时通过 key like '%partial%'

常规一

在数据库中实现与程序一致的加解密算法,修改模糊查询条件,使用数据库加解密函数先解密再模糊查找,这样做的优点是实现成本低,开发使用成本低,只需要将以往的模糊查找稍微修改一下就可以实现,但是缺点也很明显,这样做无法利用数据库的索引来优化查询,甚至有一些数据库可能无法保证与程序实现一致的加解密算法,但是对于常规的加解密算法都可以保证与应用程序一致。







请到「今天看啥」查看全文


推荐文章
化妆师MK-雷韵祺  ·  人生第一个大牌包包,应该怎么选?
8 年前
苹果汇  ·  惊艳!最强安卓旗舰Galaxy S8降临
8 年前
51Testing软件测试网  ·  我所经历的大司小司的测试之道
7 年前