当前位置: 首页 > news >正文

加密后的数据如何进行模糊查询

1. 数据库内解密再查(适合小量数据)
我们可以在数据库里实现跟程序一样的加密/解密算法,比如用 AES。查询时,就在 SQL 里用函数先解密再查,比如:

SELECT * FROMusersWHEREAES_DECRYPT(phone, 'your_key') LIKE'%1380%';

2. 分词加密 + 扩展列(强烈推荐)
核心思想就是:在原数据加密前,先把它分词,然后把每个分词分别加密,单独存下来,查的时候只查这些加密后的分词

public List<String> buildEncryptedIndex(String original, SecretKey key){List<String> tokens = new ArrayList<>();for (int i = 0; i < original.length() - 3; i++) {String sub = original.substring(i, i + 4);String encrypted = AESUtil.encrypt(sub, key);tokens.add(encrypted);}return tokens;
}

存进扩展字段 phone_index,用英文逗号拼接也行
查询时只要把用户搜索的“模糊字段”也加密一下:

String query = AESUtil.encrypt("1380", key);

然后在数据库里写:

SELECT * FROMusersWHERE phone_index LIKE'%query%';

也可以用 Elasticsearch 替代 MySQL 进行模糊查询,原理差不多:在 ES 索引里存分词后的加密结果,再用 term query 查就行了。

相关文章:

  • 日常开发心得(前端vue和后端springboot,java)
  • Spring AI 系列之使用 Spring AI 开发模型上下文协议(MCP)
  • 如何在使用kickstart安装物理机操作系统的过程中核对服务器的SN
  • 编译与链接,咕咕咕
  • IP 风险画像技术略解
  • QT开发技术 【元对象系统反射机制 】三
  • uniapp|实现多端图片上传、拍照上传自定义插入水印内容及拖拽自定义水印位置,实现水印相机、图片下载保存等功能
  • 网络安全之XSS漏洞
  • 边缘计算新基建:iVX 轻量生成模块的 ARM 架构突围
  • 服务器开机自启动服务
  • 【技术测评】黑龙江亿林网络「启强 Plus」服务器实测:56 核 32G 配置下的性能表现与应用场景解析
  • Kotlin扩展函数与属性实战指南:从入门到企业级应用
  • Kotlin 中的数据类型有隐式转换吗?为什么?
  • pythonocc hlr实例 deepwiki 显示隐藏线
  • 力扣刷题Day 60:全排列(46)
  • 【Prometheus+Grafana实战:搭建监控系统(含告警配置)】
  • HTTP代理的实际用处有哪些?HTTP代理强在哪里?
  • 54、C# 委托 (Delegate)
  • 专栏更新通知
  • 如何手搓一个查询天气的mcp server
  • 网站建设专业导航网站/百度关键字搜索排名
  • 金蝶软件怎么打印凭证/长尾词seo排名
  • 建设网站域名备案/优化大师优化项目有哪些
  • 织梦网站模板怎么做/只需要手机号的广告
  • 前端学校网站开发视频/网络销售是什么
  • wordpress建站方法/最近营销热点