加密数据的模糊查询

news/2025/2/24 6:00:02
密文检索的功能实现是根据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. 性能影响

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

http://www.niftyadmin.cn/n/5864008.html

相关文章

【C语言】第五期——函数

目录 0 前言 1 定义函数 2 调用函数 3 函数的实参和形参 4 函数声明 5 作用域 5.1 局部变量和全局变量 5.2 static关键字 5.2.1 修饰局部变量 5.2.2 修饰全局变量 5.2.3 修饰函数 6 函数的返回值 6.1 return语句 6.2 函数返回值的类型 7 函数的其他形式 7.1 函…

rust学习笔记5-所有权机制

rust核心就是所有权机制,是其内存管理的核心特性,旨在消除内存安全问题(如空指针、悬垂指针、内存泄漏等)而无需依赖垃圾回收(GC) 1.首先看一下语义模型 当声明一个变量 let a "32";它的语义模…

vue3中解决组件间 css 层级问题最佳实践(Teleport的使用)

定义&#xff1a; <Teleport> 是 Vue 3 中引入的一个内置组件&#xff0c;用于将组件的内容渲染到 DOM 中的指定位置&#xff0c;而不受组件层级结构的限制。这在处理模态框、通知、下拉菜单等需要脱离当前组件层级的情况下非常有用。 通俗来说&#xff0c;Teleport的功…

C/C++中的字符串

字符串表示方式&#xff1a; 在C语言中&#xff0c;字符串实际上是一个字符数组&#xff08;字节数组&#xff09;&#xff0c;并且以空字符 \0 结尾。例如&#xff0c;字符串 "RUNOOB" 实际上在内存中表示为 {R, U, N, O, O, B, \0}。这个 \0 终止符告诉标准库函数&…

[AI]【Comfyui】 生成基本流程图的步骤保姆记录

在进行深度学习模型或图像生成的过程中,创建流程图能够帮助清晰地表达模型的工作流程和数据流动。本文将为您介绍生成基本流程图的一般步骤,适用于常见的深度学习图像生成模型。以下是该流程图的基本步骤: 1. 创建 Load Checkpoint 节点 流程图的第一步通常是加载已经训练好…

网页制作07-html,css,javascript初认识のhtml添加多媒体

在网页中&#xff0c;&#xff0c;除了可以添加文本和图像之外还可以插入动画声音视频等媒体元素&#xff0c;如滚动效果、 Flash、 Active x以及midi声音文件等 一、设置滚动效果 1、滚动标记marquee 1)简介:使用marquee标记不仅可以滚动文字&#xff0c;也可以移动图片表格…

2025雅森北京展今天开幕,全景展现新能源汽车时代

推动汽车后市场全产业链向新向优转型升级 在2月21日举行的第36届中国国际汽车服务用品及设备展览会&#xff0c;中国国际新能源汽车技术、零部件及服务展览会&#xff08;雅森北京展CIAACE&#xff09;上&#xff0c;雅森国际总裁谢宇表示&#xff0c;当前正处在汽车行业新旧动…

鸿蒙5.0实战案例:基于ArkUI的验证码实现

往期推文全新看点&#xff08;文中附带全新鸿蒙5.0全栈学习笔录&#xff09; ✏️ 鸿蒙&#xff08;HarmonyOS&#xff09;北向开发知识点记录~ ✏️ 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ ✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景&#…