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

加密数据的模糊查询

密文检索的功能实现是根据4位英文字符(半角),2个中文字符(全角)为一个检索条件。
将一个字段拆分为多个,
比如:taobao123
使用4个字符为一组的加密方式。
第一组 taob ,第二组aoba ,第三组obao ,第四组 bao1 … 依次类推
如果需要检索 所有包含 检索条件4个字符的数据 比如:aoba ,加密字符后通过key like “%partial%” 查库。 

原理解释

  1. 分组规则

    • 英文字符:4个字符为一组
    • 中文字符:2个字符为一组
  2. 滑动窗口:每次向后移动一个字符,形成新的分组

  3. 存储方式:每个分组都需要单独加密存储,以支持模糊查询

具体示例

  1. 英文字符示例
原文:taobao123

分组过程:
taob (第1组)
aoba (第2组)
obao (第3组)
bao1 (第4组)
ao12 (第5组)
o123 (第6组)
  1. 中文字符示例
原文:淘宝网店

分组过程:
淘宝 (第1组)
宝网 (第2组)
网店 (第3组)

数据库实现示例

-- 创建存储加密分组的表
CREATE TABLE encrypted_data (
    id INT PRIMARY KEY,
    original_text VARCHAR(255),  -- 原始文本
    encrypted_group VARCHAR(255), -- 加密后的分组
    group_position INT           -- 分组位置
);

-- 插入数据示例(伪代码)
INSERT INTO encrypted_data VALUES
(1, 'taobao123', ENCRYPT('taob'), 1),
(2, 'taobao123', ENCRYPT('aoba'), 2),
(3, 'taobao123', ENCRYPT('obao'), 3),
(4, 'taobao123', ENCRYPT('bao1'), 4),
(5, 'taobao123', ENCRYPT('ao12'), 5),
(6, 'taobao123', ENCRYPT('o123'), 6);

-- 查询示例(查找包含'aoba'的记录)
SELECT DISTINCT original_text 
FROM encrypted_data 
WHERE encrypted_group LIKE CONCAT('%', ENCRYPT('aoba'), '%');

注意事项

  1. 存储空间

    • 原文长度为n的文本,会产生(n-3)个分组(对于4字符一组的情况)
    • 每个分组都需要加密存储,导致存储空间显著增加
  2. 性能影响

    • 插入数据时需要生成多个分组并加密
    • 查询时需要对输入进行加密后再模糊匹配
    • 索引效率会受到影响

相关文章:

  • BY组态:开启工业智能化的未来之钥
  • socket编程详解
  • 【HarmonyOS Next】地图使用详解(一)
  • Windows系统第一次运行C语言程序,环境配置,软件安装等遇到的坑及解决方法
  • 跨中心模型自适应牙齿分割|文献速递-医学影像人工智能进展
  • Flash-00
  • 50周学习go语言:第1周 环境搭建
  • 使用 DeepSeek 生成流程图、甘特图与思维导图:结合 Typora 和 XMind 的高效工作流
  • Python爬虫-破解字体加密技术
  • 二、Spring Framework基础:IoC(控制反转)和DI(依赖注入)
  • 运维linux日志面试题及参考答案
  • Python安全之反序列化——pickle/cPickle
  • 基于javaweb的SpringBoot个人博客系统设计和实现(源码+文档+部署讲解)
  • 登录-05.JWT令牌-介绍
  • 【C语言】第五期——函数
  • 第9章:LangChain结构化输出-示例4(基于大模型从自然语言中提取POJO)
  • 【mysql】核心参数,SHOW VARIABLES
  • 再聊OceanBase多副本和高可用
  • 网站快速收录:如何优化网站404页面?
  • 逻辑函数的神经网络实现
  • 做网站用什么软件/上海高端seo公司
  • 哪个cms做企业网站好/新闻最新消息10条
  • 赌博游戏网站怎么自己做/网络广告网站
  • 定制版网站建设详细报价单/网页设计代码大全
  • 新买的服务器怎么做网站/seo基础培训机构
  • 制作网站详细步骤/企业营销型网站建设