在系统开发过程中处理用户敏感数据如手机号、姓名、地址时直接存储明文是不可行的必须进行加密。然而加密后的数据是一串看似无序的字符如何实现有效的模糊查询成了一个挑战。例如怎样搜索类似“138****1234”或“张三”的信息而不让用户输入完整的加密字符串呢接下来我们将用最通俗的语言解释密文模糊查询的本质、行业中的常用做法以及不同方法之间的区别。一、密文模糊查询的本质很多人误以为密文模糊查询是一种高深的加密技术但实际上它非常简单——本质上就是一种“伪装成加密形式的字符串分段拼接加上普通模糊查询”与复杂的密码学关系不大。其核心目标在于解决加密后无法进行有效搜索的问题。核心要点​误区澄清​并非所有的加密都是定长的。为了能够进行模糊匹配必须放弃定长加密的方法。​解决方案​将原文分成多个小段每段单独加密后再拼接起来。查询时对关键词同样进行拆分和加密然后使用普通的模糊匹配方法来查找。二、行业主流做法目前行业内主要有三种做法来进行密文模糊查询按从简到繁排序如下做法 1电商平台方案这是目前 99% 公司采用的方法因为它简单易行且能满足业务需求。​步骤​将原文拆分为多个可能用于模糊查询的小段。对每个小段使用可逆加密方法处理。将所有加密后的小段拼接在一起存储。查询时先对查询词进行相同处理再通过数据库 LIKE 操作进行匹配。做法 2简单哈希分段此方法较电商方案更简单但安全性略低适用于对安全要求不高、追求快速部署的场景。​特点​使用哈希函数代替加密虽然实施简便但由于哈希不可逆在需要查看原文的情况下不适用。做法 3算法级高级方案这种方法复杂度极高通常只有大厂才会考虑因为它们需要专业的密码学和算法工程师团队来设计并优化。​优点​可以直接在密文上进行模糊查询无需分段处理提供更高的安全性和效率。​缺点​实施难度大成本高昂。三、三种做法对比方案实现难度加密特性查询效果存储成本安全性适用对象电商平台方案简单可逆加密良好偶尔伪结果较高中等大多数公司简单哈希分段最简单不可逆哈希有限最高较低安全性要求低的场景算法级高级方案极难高级加密优秀极低极高大厂四、总结密文模糊查询的核心在于使加密后的数据仍能被有效地检索。对于大多数公司而言采用电商平台那样的分段加密加拼接的方式是最实际的选择而对于那些对安全有着极高标准的大企业则可能需要探索更为先进的加密算法。