欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 加密数据的模糊查询

加密数据的模糊查询

2025/2/24 7:50:40 来源:https://blog.csdn.net/flamesfather/article/details/145817847  浏览:    关键词:加密数据的模糊查询
密文检索的功能实现是根据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. 性能影响

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词