数据库加密数据模糊匹配查询技术方案

文章目录

  • 前言
  • 沙雕方案
    • 内存加载解密
    • 密文映射表
  • 常规做法
    • 实现数据库加密算法
      • 参考
    • 分词组合加密(推荐)
  • 超神方案
  • 总结
  • 个人简介

前言

  • 在数据安全性和查询效率之间找到平衡是许多数据管理系统所面临的挑战之一。特别是在涉及加密数据的情况下,如何进行模糊查询变得更加复杂。在本文中,我们将探讨三种不同进阶方法:沙雕、常规和超神做法。

沙雕方案

内存加载解密

  • 将所有数据加载到内存中进行解密,然后通过程序算法来模糊匹配。这种做法效率低下,且不安全,因为涉及将所有数据加载到内存中,存在内存溢出和数据泄露的风险。
  • 一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间,用DES来举例,13800138000 加密后的串 HE9T75xNx6c5yLmS5l4r6Q== 占24个字节:

密文映射表

  • 将密文数据映射一份明文映射表,然后通过模糊查询明文映射表来关联密文数据。这种方法会暴露明文映射表,导致数据安全性降低。
  • 我们本质是为了数据安全才进行加密,这种方案属实是掩耳盗铃,多此一举。

常规做法

实现数据库加密算法

  • 在数据库底层实现数据加解密算法,在模糊查询的时候使用 decode(key) like '%partial% 进行查询。
  • 本方案看着不错,但是存在一个很大的问题,就是通用性不强,在使用多种类型数据库时,函数需要重新定义,且使用的方式也不一定兼容,可拓展性、可移植性较差。

参考

  • MySQL 自定义函数:https://zhuanlan.zhihu.com/p/128744140

分词组合加密(推荐)

  • 对密文数据进行分词组合,然后将分词组合的结果集分别进行加密,存储到扩展列中。查询时通过解密函数进行模糊匹配。这种方法在保证数据安全性的同时,也保证了查询的效率。
  • 但是我们都知道数据加密后长度会变长,出于成本、性能、安全的考虑,模糊查询的子句一般限制为:子句长度必须大于等于4个英文/数字,或者2个汉字
  • 比如国内很多互联网大厂都是使用类似的方案:
  • 阿里密文字段检索方案:https://jaq-doc.alibaba.com/docs/doc.htm?treeId=1&articleId=106213&docType=1#s1
  • 淘宝密文字段检索方案:https://open.taobao.com/docV3.htm?docId=106213&docType=1

超神方案

  • 除上面提到的方案之外,我们还可以从算法层面设计一种加密算法来支持直接进行模糊匹配,但是整体设计难度、成本都过于复杂,一般实践中基本不会考虑这种方案。
  • 下面是一些参考资料,有兴趣的朋友可以看一下:
  • 支持快速查询的数据库如何加密:https://www.jiamisoft.com/blog/5961-kuaisuchaxunshujukujiami.html
  • 基于Lucene的云端搜索与密文基础上的模糊查询:https://www.cnblogs.com/arthurqin/p/6307153.html

总结

  • 通过本文的介绍和示例,我们可以更好地理解不同方法在加密数据的模糊查询中的应用和实现方式。选择合适的方法取决于数据安全性、查询效率和实现难度等因素的综合考量。

个人简介

👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

📖 保持关注我的博客,让我们共同追求技术卓越。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/834328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3+ts--实际开发之--table表格打印或者保存

vue3实现指定区域打印(导出)功能-主要是解决分页内容分割问题 一、 问题页面效果二、 Print.js相关属性 和使用1. 介绍2. 安装引入3. PrintJS参数配置表 三 、解决关于分页文字或者表格被分割问题,解决后如下:1. 设置一个自定义ta…

c4d云渲染怎么操作?怎么使用?一文带你了解

Cinema 4D (C4D) 不仅是众多设计师所青睐的卓越三维软件,其自带的高效渲染器以及对云渲染农场的支持,都极大地拓宽了创意和生产的边界。通过利用强大的云计算资源,C4D能够帮助用户轻松克服渲染速度缓慢的难题,从而实现更加流畅和高…

新一代异步IO框架 io_uring

1.io_uring简介 io_uring是一个Linux内核的异步I/O框架,它提供了高性能的异步I/O操作,io_uring的目标是通过减少系统调用和上下文切换的开销来提高I/O操作的性能。 io_uring通过使用环形缓冲区和事件驱动的方式来实现高效的异步I/O操作。 io_uring的设…

ai直播-智能化视频直播-全程自动学,高效互动问答!

ai直播-智能化视频直播-全程自动学,高效互动问答! 普通人想要致富,光靠勤劳是不可能的,唯有抓住时代风口,才能铸造成功之路。 大家都知道,现在最赚钱的行业,直播和卖货,肯定是名列…

Codigger:Web应用让开发者拥有更高效的开发之旅

在当今软件开发领域,Web应用以其跨平台、易访问和实时更新的特性,逐渐成为了主流的开发方向。从开发者的视角来看,Codigger借助B/S(浏览器/服务器)架构和云计算技术,为开发者带来了诸多便利和优势。这些优势…

苏州金龙何以成为塞尔维亚中国客车第一品牌?研发向上服务助力!

5月7日至8日,一场举世瞩目的会晤在塞尔维亚举行。作为塞尔维亚中国客车第一品牌,苏州金龙海格客车也为当地民众绿色公共出行提供了“中国力量”。 目前,苏州金龙海格客车在塞尔维亚保有量近200台,是在塞尔维亚保有量最大的中国客车…

Linux系统入侵排查(二)

前言 为什么要做系统入侵排查 入侵排查1 1.排查历史命令记录 2.可疑端口排查 3.可疑进程排查 4.开机启动项 4.1系统运行级别示意图: 4.2查看运行级别命令 4.3系统默认允许级别 4.4.开机启动配置文件 入侵排查2: 1.启动项文件排查&#xff1…

友思特分享 | 激发专属跃迁:用于皮肤医美和光学研究种子源的DPSS激光器

导读 紧凑、坚固、稳定和提供高质量光束的友思特DPSS激光器因其卓越的性能,可作为激光种子源,广泛应用于皮肤医美、非线性光学OPO,以及全息投影技术。 激光(Laser)的诞生是上个世纪科学技术的巨大飞跃,其发…

大语言模型入门介绍(附赠书)

自2022年底ChatGPT的震撼上线以来,大语言模型技术迅速在学术界和工业界引起了广泛关注,标志着人工智能技术的又一次重要跃进。作为当前人工智能领域的前沿技术之一,代表了机器学习模型在规模和复杂性上的显著进步。它们通常由深度神经网络构成…

C++进阶之路:何为命名空间、缺省参数与函数重载

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

如何修复连接失败出现的错误651?这里提供修复方法

错误651消息在Windows 7到Windows 11上很常见,通常会出现在一个小的弹出窗口中。实际文本略有不同,具体取决于连接问题的原因,但始终包括文本“错误651”。 虽然很烦人,但错误651是一个相对较小的问题,不应该导致计算…

C#调用电脑摄像头拍照

1.打开VS2019,新建一个Form窗体,工具->NuGet包管理工具->管理解决方案的NuGet包,在浏览里搜索AForge.Controls、AForge.Video.DirectShow,安装AForge.Controls和AForge.Video.DirectShow 2.安装AForge组件完成后&#xff0c…

docker-compose集成elasticsearch7.17.14+kibana7.17.14

1.docker和compose版本必须要高 2.准备ik分词器(elasticsearch-analysis-ik-7.17.14),下面会用到 https://github.com/infinilabs/analysis-ik/releases?page2 3.配置es-compose.yml(切记映射容器内路径不能更改,es和kibana服务…

LeetCode例题讲解:只出现一次的数字

给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 示例 1 : 输入&#xff…

浅谈工商业储能发展下 防逆流互感器的优势

安科瑞 王盼盼 18721098782 随着新能源政策的推动和全球能源转型的需求,逆变器行业正在经历快速发展。其中,防逆流装置作为逆变器的重要组成部分,其互感器的选择对于逆变器的性能和稳定性至关重要。本文将从逆变器厂家制作防逆流装…

激光跟踪仪在石油化工领域高效应用

管板式换热器是一种实现物料之间热量传递的节能设备,在石油化工行业生产过程中扮演着重要的角色。无论是在提高生产效率,保证产品质量还是节约能源方面,都发挥着重要作用。 测量需求 管板式热交换器内部有多个管板和折流板,每一…

联机负载-性能测试基础

联机负载-性能测试基础 前置脚本 Action() {int iter_num 0;web_url("webtours", "URLhttp://192.168.30.131:1080/webtours", "TargetFrame", "Resource0", "RecContentTypetext/html", "Referer", "Sna…

IP SSL证书申请教程:实现HTTPS加密访问

随着网络安全意识的提高,HTTPS加密访问已经成为网站安全性的重要标准。通过安装SSL证书,网站可以实现数据的加密传输,有效保护用户隐私和数据安全。本文将详细介绍如何为IP地址申请SSL证书,并实现HTTPS加密访问。 一、准备工作 …

vue项目启动后页面显示‘Cannot GET /’

1、npm run dev命令启动项目的时候没有报错,页面打开却提示 Cannot GET / 2.这个时候只需要找到config文件夹下面的index.js文件。把assetsPublicPath字符串的:‘./’修改成 ‘/’就行了。修改完之后记得关闭项目,然后重新启动。不然不会生效…

UE5材质基础(2)——数学节点篇1

UE5材质基础(2)——数学节点篇1 目录 UE5材质基础(2)——数学节点篇1 Add节点 Append节点 Abs节点 Subtract节点 Multiply节点 Divide节点 Clamp节点 Time节点 Lerp节点 Add节点 快捷键:A鼠标左键 值相加…