首页 > 其他分享 >如何对加密后的数据进行模糊查询(面试题)

如何对加密后的数据进行模糊查询(面试题)

时间:2024-08-15 12:55:38浏览次数:15  
标签:面试题 加密 手机号 模糊 支持 查询 数据

目录

前言

这道题在面试比较常见,但是在算法逻辑层面中,直接对加密数据进行模糊查询是不可行的,因为加密算法会使数据变成不可读的形式
需要在加密过程中采取特殊的策略来支持模糊查询

以下只是结合网上现有的资料提供一个思路
(通过自定义一些规则还有说明,达到模糊查询,以此正确配对)

1. 基本知识

一、加密算法的限制
加密后的数据是不可读的,所以不能直接进行模糊查询
对称加密和非对称加密的加密数据无法直接支持模糊查询

二、加密数据的模糊查询解决方案

  • 可搜索加密:一种加密方法,允许在加密数据上进行搜索操作
    对称可搜索加密:在对称加密的基础上支持模糊查询,如通过加密关键词索引
    同态加密:允许在加密数据上执行某些操作,例如加法和乘法,但对模糊查询支持有限
    功能性加密:允许在加密数据上执行特定功能,如查询某些属性的加密数据
  • 加密索引:建立加密的索引结构,用于加速模糊查询
    例如,基于 Bloom Filter 或其他数据结构来实现加密后的索引查询

2. 国内做法

淘宝密文检索方案:https://open.taobao.com/docV3.htm?docId=106213&docType=1
拼多多密文检索方案:https://open.pinduoduo.com/application/document/browse?idStr=7553D76C8D1713EF

先通过市面环境查看,发现大多数都差不多,都是通过

  • 对字段进行分段加密以支持模糊查询。将字段拆分成多个部分进行加密
    例:对字符串“taobao123”进行4字符为一组的加密,生成多个加密部分,如“taob”、“aoba”、“obao”等
  • 支持的查询条件:英文/数字至少4字符,中文至少2个字符
  • 查询时,通过key like “%partial%”的方式进行模糊查询

基本的加密场景也差不多

  • 普通加密方式
    适用于手机号之外的字段
    对手机号支持前3位的模糊查询
  • 支持模糊查询的加密方式
    适用于手机号之外的字段
    对手机号支持后4位的模糊查询

标签:面试题,加密,手机号,模糊,支持,查询,数据
From: https://blog.csdn.net/weixin_47872288/article/details/141102844

相关文章

  • 大模型面试题库精华:100道经典问题解析
    ↓推荐关注↓算法暑期实习机会快结束了,校招大考即将来袭。当前就业环境已不再是那个双向奔赴时代了。求职者在变多,岗位在变少,要求还更高了。最近,我们陆续整理了很多大厂的面试题,帮助网友解惑答疑和职业规划,分享了面试中的那些弯弯绕绕。喜欢本文记得收藏、关注、点赞,更......
  • Android笔试面试题AI答之Kotlin(6)
    文章目录24.以下代码执行的结果是什么?25.解释一下下述Kotlin代码有什么问题?26.如何在Kotlin中创建常量?示例注意事项总结27.Koltin可以互换使用IntArray和Kotlin中的Array吗?IntArrayArray<Int>互换使用从IntArray到Array<Int>从Array<Int>到IntArra......
  • spring cloud面试题
    什么是SpringCloud?SpringCloud是一个微服务框架,‌它提供了全套的分布式系统解决方案。使用SpringCloud有什么优势将单体服务拆分所带来的问题:-服务实例太多怎么办-服务调用关系太杂乱怎么办-服务访问出错了怎么办-配置信息散落在各个服务中怎么办-服务调用链路......
  • 我的点赞功能(完整分页查询步骤)和快速刷题开发
    文章目录1.我的点赞分页展示1.分页查询工具类1.PageInfo.java需要分页查询的就继承它,传值的时候pageNo和pageSize可以为空2.PageResult.java根据条件从数据库中查询信息,然后设置这里的四个值即可得到分页查询结果2.sun-club-application-controller1.SubjectLikedDTO.......
  • 自动化测试常考的面试题+答案
    目录1、apache和nginx的区别?2、平常用什么工具测接口的?3、没有接口文档,如何做接口测试?4、在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?5、依赖于第三方数据的接口如何进行测试?6、你平常做接口测试的过程中发现过哪些bug?7、如何分析一个bug......
  • MySQL6 嵌套查询、子查询、自关联查询、SQL函数
    嵌套查询(子查询)基本概念:一个查询语句(外部查询)中包含了另一个查询语句(子查询)select列名1,列名2....from表1,表2where条件条件表达式(子查询语句)子查询被当作一个单元来执行,它先于外部查询执行,其结果可以被外部查询使用。子查询的结果通常被看作是一个临时表,外......
  • [开题报告]FLASK框架文件加密系统的设计与实现tp835(源码+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,文件作为信息交换的重要载体,在日常生活和工作中扮演着不可或缺的角色。然而,这些文件往往包含大量的敏感信息,如个人......
  • 轻松解析高频面试题: 线程设置数量多少合适?带你面试乱杀
    目录一、前言二、线程数和CPU利用率的小测试三、插入io操作四、线程数和CPU利用率总结五、线程数规划的公式 六、真实程序中的线程数一、前言相信很多小伙伴在刷面试题的时候都看到过一个线程数设置的理论:CPU密集型的程序-核心数+1I/O密集型的程序-核心数......
  • 线段树+懒标记 (区间修改,区间查询)
    原作者:董晓P3372【模板】线段树1//结构体版#include<cstring>#include<iostream>#include<algorithm>usingnamespacestd;#defineN100005#defineLLlonglong#definelcu<<1#definercu<<1|1LLw[N];structTree{//线段树LLl,r,......
  • ST表 RMQ问题(区间最大/最小值查询)
    #include<iostream>#include<cstring>#include<algorithm>#include<cmath>usingnamespacestd;intf[100005][22];intmain(){intn,m;scanf("%d%d",&n,&m);for(inti=1;i<=n;i++)scanf("%d"......