CN117971859A - 数据查询方法、装置、存储介质及电子设备 - Google Patents
数据查询方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN117971859A CN117971859A CN202311737667.5A CN202311737667A CN117971859A CN 117971859 A CN117971859 A CN 117971859A CN 202311737667 A CN202311737667 A CN 202311737667A CN 117971859 A CN117971859 A CN 117971859A
- Authority
- CN
- China
- Prior art keywords
- ciphertext
- data
- encryption
- decryption
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 230000014509 gene expression Effects 0.000 claims description 11
- 238000004458 analytical method Methods 0.000 claims description 7
- 239000000523 sample Substances 0.000 claims 1
- 230000006978 adaptation Effects 0.000 abstract description 5
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000004590 computer program Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000001680 brushing effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种数据查询方法、装置、存储介质及电子设备。其中,该方法包括:确定用户端的历史加解密策略和当前加解密策略;获取结构化查询语句;对结构化查询语句进行解析,得到待查询数据和查询位置;采用历史加解密策略,对待查询数据进行加密,得到第一密文;采用当前加解密策略,对待查询数据进行加密,得到第二密文;基于查询位置,在目标数据库中进行查询,得到目标密文;在第一密文或第二密文中的一个密文与目标密文匹配的情况下,确定待查询数据的查询结果为与目标数据库中的存储数据一致。本发明解决了相关技术中存在加解密策略更新后,必须进行存储的密文数据刷库处理,导致无法支持多类型密文适配的技术问题。
Description
技术领域
本发明涉及密文检索领域,具体而言,涉及一种数据查询方法、装置、存储介质及电子设备。
背景技术
相关技术中使用同态加密技术来实现在加密状态下的检索和解密操作,从而确保数据隐私和安全性,同时允许用户检索他们所需的文档。这个技术主要存在两个方面的问题:第一个问题是该技术方案主要面向云端场景,本地场景不需要这么复杂的运算。第二个问题是该技术方案针对的是单一密文结构,比如密钥更新了,数据量巨大的情况下可能存在多种类型的密文同时存在的情况。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据查询方法、装置、存储介质及电子设备,以至少解决相关技术中存在加解密策略更新后,必须进行存储的密文数据刷库处理,导致无法支持多类型密文适配的技术问题。
根据本发明实施例的一个方面,提供了一种数据查询方法,包括:确定用户端在当前时刻之前配置的历史加解密策略,以及所述当前时刻配置的当前加解密策略;获取结构化查询语句;对所述结构化查询语句进行解析,得到待查询数据和查询位置;采用所述历史加解密策略,对所述待查询数据进行加密,得到第一密文;采用所述当前加解密策略,对所述待查询数据进行加密,得到第二密文;基于所述查询位置,在与所述结构化查询语句进行交互的目标数据库中进行查询,得到目标密文;在所述第一密文或所述第二密文中的一个密文与所述目标密文匹配的情况下,确定所述待查询数据的查询结果为与所述目标数据库中的存储数据一致。
可选地,所述对所述结构化查询语句进行解析,得到待查询数据和查询位置,包括:对所述结构化查询语句进行词法分析,生成按照所述结构化查询语句的语法结构生成抽象语法树,其中,所述抽象语法数据中的节点为所述结构化查询语句中语法元素,所述语法元素至少包括关键字,条件表达式,以及字符串;基于所述抽象语法树中的节点指示的关键字和条件表达式,确定所述查询位置;基于所述抽象语法树中的节点指示的字符串,确定所述待查询数据。
可选地,所述获取结构化查询语句,包括:获取数据库驱动代理的数据库驱动信息,其中,所述数据库驱动代理用于所述用户端访问数据库层,所述数据库层中包括多个数据库,所述多个数据库分别对应不同的方言类型,所述目标数据库属于所述多个数据库;基于所述数据库驱动信息,生成代理连接,其中,所述代理连接使得所述用户端通过中间件访问所述数据库;采用所述代理连接对所述用户端发送的语句进行拦截,得到所述结构化查询语句。
可选地,所述代理连接中存储有所述历史加解密策略和所述当前加解密策略,所述采用所述代理连接对所述用户端发送的语句进行拦截,得到所述结构化查询语句,包括:采用所述代理连接对所述用户端发送的语句进行拦截,得到初始语句;基于所述历史加解密策略和所述当前加解密策略分别指示的解密方法,对所述初始语句进行组合加密,得到加密语句;将所述加密语句通过所述代理连接向所述数据库层进行传输,在所述加密语句传输至所述数据库层的情况下,基于所述历史加解密策略和所述当前加解密策略分别指示的解密方法,对所述加密语句进行组合解密,得到所述结构化查询语句。
可选地,在所述基于所述查询位置,在与所述结构化查询语句进行交互的目标数据库中进行查询,得到目标密文之前,所述方法还包括:确定所述结构化查询语句对应的目标方言类型,其中,所述目标方言类型为在所述结构化查询语句的语句变种类型;基于所述目标方言类型,在数据库层包括的多个数据库中确定所述目标数据库,其中,所述多个数据库分别对应不同的方言类型。
可选地,所述采用所述历史加解密策略,对所述待查询数据进行加密,得到第一密文,包括:采用所述历史加解密策略,对所述待查询数据进行加密,得到第三密文;采用所述目标方言类型,对所述第三密文进行调整,得到所述第一密文;所述采用所述当前加解密策略,对所述待查询数据进行加密,得到第二密文,包括:采用所述当前加解密策略,对所述待查询数据进行加密,得到第四密文;采用所述目标方言类型,对所述第四密文进行调整,得到所述第二密文。
可选地,所述目标数据库中允许存在采用所述历史加解密策略进行加密的数据,以及采用所述当前加解密策略进行加密的数据。
根据本发明实施例的另一方面,提供了一种数据查询装置,包括:加解密策略确定模块,用于确定用户端在当前时刻之前配置的历史加解密策略,以及所述当前时刻配置的当前加解密策略;语句获取模块,用于获取结构化查询语句;语句解析模块,用于对所述结构化查询语句进行解析,得到待查询数据和查询位置;第一密文生成模块,用于采用所述历史加解密策略,对所述待查询数据进行加密,得到第一密文;第二密文生成模块,用于采用所述当前加解密策略,对所述待查询数据进行加密,得到第二密文;存储密文查询模块,用于基于所述查询位置,在与所述结构化查询语句进行交互的目标数据库中进行查询,得到目标密文;密文匹配模块,用于在所述第一密文或所述第二密文中的一个密文与所述目标密文匹配的情况下,确定所述待查询数据的查询结果为与所述目标数据库中的存储数据一致。
根据本发明实施例的另一方面,提供了一种非易失性存储介质,所述非易失性存储介质存储有多条指令,所述指令适于由处理器加载并执行任意一项所述的数据查询方法。
根据本发明实施例的另一方面,提供了一种电子设备,包括:一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现任意一项所述的数据查询方法。
在本发明实施例中,通过确定用户端在当前时刻之前配置的历史加解密策略,以及所述当前时刻配置的当前加解密策略;获取结构化查询语句;对所述结构化查询语句进行解析,得到待查询数据和查询位置;采用所述历史加解密策略,对所述待查询数据进行加密,得到第一密文;采用所述当前加解密策略,对所述待查询数据进行加密,得到第二密文;基于所述查询位置,在与所述结构化查询语句进行交互的目标数据库中进行查询,得到目标密文;在所述第一密文或所述第二密文中的一个密文与所述目标密文匹配的情况下,确定所述待查询数据的查询结果为与所述目标数据库中的存储数据一致。达到了兼容多种加解密策略的密文检索的目的,实现了无需进行业务方代码改造,平滑度过密文格式刷新的技术效果,进而解决了相关技术中存在加解密策略更新后,必须进行存储的密文数据刷库处理,导致无法支持多类型密文适配的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例提供的一种可选的数据查询方法的流程图;
图2是根据本发明实施例提供的一种可选的数据查询装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
JDBC(Java Database Connection)代理,JDBC是基于Java的标准接口,它提供了一组接口和类,可以让Java应用程序与各个数据库进行交互。
SQL(Structured Query Language),是结构化查询语言,SQL语句是用来与数据库进行交互的命令集合,用于查询、插入、更新和删除数据库中的数据。
抽象语法树,(AST,Abstract Syntax Tree),是编程语言中源代码语法结构的一种抽象表示,通常用于编译器和解释器中,用于表示程序的语法结构,以便进行语法分析和语义分析。AST以树状结构的形式表示程序的语法结构,每个节点代表程序中的一个语法结构,如表达式、语句、函数等。AST被广泛用于编程语言的编译和解释过程中。
根据本发明实施例,提供了一种数据查询的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例提供的一种可选的数据查询方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,确定用户端在当前时刻之前配置的历史加解密策略,以及当前时刻配置的当前加解密策略;
可以理解,用户端作为业务方,可以使用控制台进行加解密策略配置,在当前时刻之前可能存在历史加解密策略,同样历史加解密策略的个数可以为一个或多个,还可以获取当前时刻配置的当前加解密策略。通过上述处理,可以确定用户端设置有的所有加解密策略,用于后续多种类型密文并存检索。
需要说明的是,数据库中可以按照用户端配置过的多种加解密策略,存储有多种密文,只采用当前加解密策略是无法对采用之前使用的历史加解密策略的密文数据进行查询的。相关技术中需要在短时间内进行所有密文进行密文格式一致性的刷库,如果对数据库中的大量密文进行快速批量加解密操作,会对数据库性能产生重大影响,可能引发系统崩溃。并且刷库过程中筒仓需要对数据库进行锁定、备份、恢复等额外操作,增加了数据库管理的复杂性。
步骤S104,获取结构化查询语句;
可以理解,用户端需要进行查询,会发送来结构化查询语句,向数据库执行查询处理。上述结构化查询语句为SQL语句。
在一种可选的实施例中,获取结构化查询语句,包括:获取数据库驱动代理的数据库驱动信息,其中,数据库驱动代理用于用户端访问数据库层,数据库层中包括多个数据库,多个数据库分别对应不同的方言类型,目标数据库属于多个数据库;基于数据库驱动信息,生成代理连接,其中,代理连接使得用户端通过中间件访问数据库;采用代理连接对用户端发送的语句进行拦截,得到结构化查询语句。
可以理解,要获取数据库驱动代理的数据库驱动信息,需要查看数据库驱动代理的配置文件,或者通过响应工具进行获取。在获取数据库驱动信息之后,可以通过配置代理连接来实现用户端,通过中间件访问数据库,经过代理连接,用户端无需进行业务代码改造,实现用户端无感知。用户端可以发送结构化查询语句,并通过中间件拦截得到结构化查询语句,实现帮助用户对数据库的访问和操作。在生成代理连接的过程中,需要确保代理连接能够正确地连接到目标数据库,并且能够支持不同的数据库方言类型,用户可以方便地访问和操作数据库,不需要直接与数据库进行交互。
可选的,数据库驱动代理的数据库驱动信息,通常把数据库驱动程序的名称、版本号、厂商信息、连接字符串格式、支持数据库版本、连接配置信息等等。上述信息指示了数据库驱动的特性和功能,可以实现数据库的交互处理。
可选地,上述代理连接为JDBC代理连接,假定历史加解密策略为加密策略A1和解密策略A2,当前加解密策略为加密策略B1和解密策略B2,并将加密策略A1和加密策略B1以及解密策略A2,解密策略B2包装在数据库连接中形成JDBC代理连接。
可选地,针对于本地场景,特别是JAVA的应用程序都是通过JDBC的标准接口进行数据库访问,所以可以在这一层做一层代理,将所需要的加解密策略信息通过控制台进行下发,然后对配置识别到的节点进行运算。
在一种可选的实施例中,代理连接中存储有历史加解密策略和当前加解密策略,采用代理连接对用户端发送的语句进行拦截,得到结构化查询语句,包括:采用代理连接对用户端发送的语句进行拦截,得到初始语句;基于历史加解密策略和当前加解密策略分别指示的解密方法,对初始语句进行组合加密,得到加密语句;将加密语句通过代理连接向数据库层进行传输,在加密语句传输至数据库层的情况下,基于历史加解密策略和当前加解密策略分别指示的解密方法,对加密语句进行组合解密,得到结构化查询语句。
可以理解,代理连接拦截用户端发送的语句,得到初始语句。基于历史加解密策略和当前加解密策略指示的解密方法,对初始语句进行组合加密,得到加密语句。将加密语句通过代理连接向数据库层进行传输。当加密语句传输至数据库层时,根据历史加解密策略和当前加解密策略指示的解密方法,对加密语句进行组合解密,得到结构化查询语句。通过在数据传输过程中保护数据的安全,通过加密和解密方法来确保数据库通信的机密性和完整性。
步骤S106,对结构化查询语句进行解析,得到待查询数据和查询位置;
可以理解,获取到结构化查询语句进行解析,可以从中得到待查询数据,以及需要在数据库中的查询位置。需要说明的是,用户端需要确定待查询数据与数据库中存储的数据是否一致。例如用户端需要查询账户标识是否是“12345”(即待查询数据),如果数据库中存储的该账户标识也是“12345”,那么可以确定账户标识就是“12345”。
在一种可选的实施例中,对结构化查询语句进行解析,得到待查询数据和查询位置,包括:对结构化查询语句进行词法分析,生成按照结构化查询语句的语法结构生成抽象语法树,其中,抽象语法数据中的节点为结构化查询语句中语法元素,语法元素至少包括关键字,条件表达式,以及字符串;基于抽象语法树中的节点指示的关键字和条件表达式,确定查询位置;基于抽象语法树中的节点指示的字符串,确定待查询数据。
可以理解,对结构化查询语句进行词法分析,将其转换为抽象语法树,其中抽象语法树的节点表示查询语句中的语法元素,如关键字、条件表达式和字符串。基于抽象语法树中的节点指示的关键字和条件表达式,确定查询位置,也就是确定查询语句中的条件和操作对象。基于抽象语法树中的节点指示的字符串,确定待查询数据,也就是确定查询语句中的具体数值或字段名。通过将结构化查询语句转换为计算机可理解的抽象语法树,并从中提取关键信息用于确定查询位置和待查询数据。
步骤S108,采用历史加解密策略,对待查询数据进行加密,得到第一密文;
可以理解,使用历史加密策略对待查询数据进行加密,得到第一密文。例如按照历史加解密策略指示的加密策略A1,对待查询数据(可为“12345”)进行加密,生成密文表示为TA=AC59075B964B0715。
需要说明的是,上述历史加解密策略如果有多种,那么对应的第一密文也会有多条。
步骤S110,采用当前加解密策略,对待查询数据进行加密,得到第二密文;
可以理解,使用当前加解密策略对待查询数据进行加密,生成第二密文。例如按照当前加解密策略指示的加密策略B1,对待查询数据(可为“12345”)进行加密,生成密文表示为TB=B505FFED0D024130。
步骤S112,基于查询位置,在与结构化查询语句进行交互的目标数据库中进行查询,得到目标密文;
可以理解,按照由结构化查询语句得到的查询位置,在于结构化查询语句进行交互的目标数据库中进行查询,可以得到存储于目标数据库的目标密文。
在一种可选的实施例中,在基于查询位置,在与结构化查询语句进行交互的目标数据库中进行查询,得到目标密文之前,该方法还包括:确定结构化查询语句对应的目标方言类型,其中,目标方言类型为在结构化查询语句的语句变种类型;基于目标方言类型,在数据库层包括的多个数据库中确定目标数据库,其中,多个数据库分别对应不同的方言类型。
可以理解,需要确定结构化查询语句对应的目标方言类型,然后在多个数据库中确定目标数据库,这些数据库分别对应不同的方言类型。目标方言类型指的是查询语句的语法变种类型,例如SQLServer的T-SQL方言,MySQL的MySQL方言,Oracle的PL/SQL方言等。每种数据库都有自己的特定语法和功能,这些语法和功能统称为方言类型。在确定目标数据库时,需要考虑结构化查询语句所属的方言类型,以便选择适合该方言类型的数据库。如果查询语句是针对T-SQL方言类型的,那么目标数据库可能是Microsoft SQL Server,如果是针对MySQL方言类型的,那么目标数据库可能是MySQL数据库。在确定目标数据库时,需要考虑结构化查询语句的方言类型,以确保选择的数据库支持该方言类型。
在一种可选的实施例中,采用历史加解密策略,对待查询数据进行加密,得到第一密文,包括:采用历史加解密策略,对待查询数据进行加密,得到第三密文;采用目标方言类型,对第三密文进行调整,得到第一密文;采用当前加解密策略,对待查询数据进行加密,得到第二密文,包括:采用当前加解密策略,对待查询数据进行加密,得到第四密文;采用目标方言类型,对第四密文进行调整,得到第二密文。
可以理解,首先使用历史加解密策略对待查询数据进行加密,得到第三密文。然后,根据目标方言类型对第三密文进行调整,得到第一密文。接着使用当前加解密策略对待查询数据进行加密,得到第四密文,再根据目标方言类型对第四密文进行调整,得到第二密文。通过使用不同的加密算法和处理方法,以及根据目标方言类型对加密结果进行调整。可以确保数据在传输和存储过程中得到适当的加密和处理,以满足安全和数据库方言需求。
可选地,上述假定目标方言类型为Mysql,对采用历史加解密策略生成的第三密文TA=AC59075B964B0715,根据Mysql格式进行调整,得到第一密文AC59075B964B0715。对采用历史加解密策略生成的第四密文TB=B505FFED0D024130,根据Mysql格式进行调整,得到第二密文B505FFED0D024130。
步骤S114,在第一密文或第二密文中的一个密文与目标密文匹配的情况下,确定待查询数据的查询结果为与目标数据库中的存储数据一致。
可以理解,在第一密文或第二密文中如果有一个密文,与目标密文相匹配的情况下,可以确定待查询数据的查询结果与目标数据库中的存储数据一致。
在一种可选的实施例中,目标数据库中允许存在采用历史加解密策略进行加密的数据,以及采用当前加解密策略进行加密的数据。
可以理解,目标数据库中可以支持多种加解密策略的密文数据,即使不进行密文一致性的刷库处理,也不会影响到用户端进行数据查询。
通过上述步骤S102,确定用户端在当前时刻之前配置的历史加解密策略,以及当前时刻配置的当前加解密策略;步骤S104,获取结构化查询语句;步骤S106,对结构化查询语句进行解析,得到待查询数据和查询位置;步骤S108,采用历史加解密策略,对待查询数据进行加密,得到第一密文;步骤S110,采用当前加解密策略,对待查询数据进行加密,得到第二密文;步骤S112,基于查询位置,在与结构化查询语句进行交互的目标数据库中进行查询,得到目标密文;步骤S114,在第一密文或第二密文中的一个密文与目标密文匹配的情况下,确定待查询数据的查询结果为与目标数据库中的存储数据一致。可以实现兼容多种加解密策略的密文检索的目的,实现了无需进行业务方代码改造,平滑度过密文格式刷新的技术效果,进而解决了相关技术中存在加解密策略更新后,必须进行存储的密文数据刷库处理,导致无法支持多类型密文适配的技术问题。
基于上述实施例和可选实施例,本发明提出一种可选实施方式,用户端为业务方,用户端在控制台配置了加密策略A1和解密策略A2,作为历史加解密策略。使用历史加解密策略作为用户端的配置,通过数据库驱动代理运行了很久,在数据库中会产生大量的以历史加解密策略格式的密文数据。假如用户端因密钥泄漏需要升级密钥,在控制台又配置了加密策略B1和解密策略B2,作为当前加解密策略。
用户端在更新加密配置之后,执行一条数据库查询语句,即SQL语句,用户端希望查询账户标识是不是“12345”是否在数据库中存在。用户端应用获取数据驱动代理,然后找到真正的数据库驱动信息,创建数据库连接,并将加密策略A1和加密策略B1以及解密策略A2,解密策略B2包装在数据库连接中形成JDBC代理连接。
在获取到JDBC代理数据连接后,执行SQL语句,代理会拦截到SQL,根据其数据库类型找到对应的方言库,将SQL语句解析成抽象语法树,然后找到账户标识这个节点。根据加密策略A1和加密策略B1,生成密文TA=AC59075B964B0715和密文TB=B505FFED0D024130,然后根据SQL方言比如是MYSQL,生成两种情况存在一种即为真的语义,生成AC59075B964B0715,或B505FFED0D024130,返回最终SQL查询结果。执行最终的SQL语句,并返回查询结果。
由上述可选实施方式至少实现以下效果:在数据量极多,密文格式或者密钥更新的情况下,无法做到短时间将密文格式刷成一致,通过本发明实施例可以在业务方无需改造的情况下,平滑度过密文格式刷成一致这个过渡期,保证升级过程对存量业务无影响,同时业务方的代码无需改动。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中还提供了一种数据查询装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”“装置”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
根据本发明实施例,还提供了一种用于实施数据查询方法的装置实施例,图2是根据本发明实施例的一种数据查询装置的示意图,如图2所示,上述数据查询装置,包括:加解密策略确定模块202,语句获取模块204,语句解析模块206,第一密文生成模块208,第二密文生成模块210,存储密文查询模块212,密文匹配模块214,下面对该装置进行说明。
加解密策略确定模块202,用于确定用户端在当前时刻之前配置的历史加解密策略,以及当前时刻配置的当前加解密策略;
语句获取模块204,与加解密策略确定模块202连接,用于获取结构化查询语句;
语句解析模块206,与语句获取模块204连接,用于对结构化查询语句进行解析,得到待查询数据和查询位置;
第一密文生成模块208,与语句解析模块206连接,用于采用历史加解密策略,对待查询数据进行加密,得到第一密文;
第二密文生成模块210,与第一密文生成模块208连接,用于采用当前加解密策略,对待查询数据进行加密,得到第二密文;
存储密文查询模块212,与第二密文生成模块210连接,用于基于查询位置,在与结构化查询语句进行交互的目标数据库中进行查询,得到目标密文;
密文匹配模块214,与存储密文查询模块212连接,用于在第一密文或第二密文中的一个密文与目标密文匹配的情况下,确定待查询数据的查询结果为与目标数据库中的存储数据一致。
本发明实施例提供的一种数据查询装置中,通过加解密策略确定模块202,用于确定用户端在当前时刻之前配置的历史加解密策略,以及当前时刻配置的当前加解密策略;语句获取模块204,与加解密策略确定模块202连接,用于获取结构化查询语句;语句解析模块206,与语句获取模块204连接,用于对结构化查询语句进行解析,得到待查询数据和查询位置;第一密文生成模块208,与语句解析模块206连接,用于采用历史加解密策略,对待查询数据进行加密,得到第一密文;第二密文生成模块210,与第一密文生成模块208连接,用于采用当前加解密策略,对待查询数据进行加密,得到第二密文;存储密文查询模块212,与第二密文生成模块210连接,用于基于查询位置,在与结构化查询语句进行交互的目标数据库中进行查询,得到目标密文;密文匹配模块214,与存储密文查询模块212连接,用于在第一密文或第二密文中的一个密文与目标密文匹配的情况下,确定待查询数据的查询结果为与目标数据库中的存储数据一致。达到了兼容多种加解密策略的密文检索的目的,实现了无需进行业务方代码改造,平滑度过密文格式刷新的技术效果,进而解决了相关技术中存在加解密策略更新后,必须进行存储的密文数据刷库处理,导致无法支持多类型密文适配的技术问题。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一处理器中;或者,上述各个模块以任意组合的方式位于不同的处理器中。
此处需要说明的是,上述加解密策略确定模块202,语句获取模块204,语句解析模块206,第一密文生成模块208,第二密文生成模块210,存储密文查询模块212,密文匹配模块214对应于实施例中的步骤S102至步骤S114,上述模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在计算机终端中。
需要说明的是,本实施例的可选或优选实施方式可以参见实施例中的相关描述,此处不再赘述。
上述数据查询装置还可以包括处理器和存储器,加解密策略确定模块202,语句获取模块204,语句解析模块206,第一密文生成模块208,第二密文生成模块210,存储密文查询模块212,密文匹配模块214等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种非易失性存储介质,其上存储有程序,该程序被处理器执行时实现数据查询方法。
本发明实施例提供了一种电子设备,该电子设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:确定用户端在当前时刻之前配置的历史加解密策略,以及当前时刻配置的当前加解密策略;获取结构化查询语句;对结构化查询语句进行解析,得到待查询数据和查询位置;采用历史加解密策略,对待查询数据进行加密,得到第一密文;采用当前加解密策略,对待查询数据进行加密,得到第二密文;基于查询位置,在与结构化查询语句进行交互的目标数据库中进行查询,得到目标密文;在第一密文或第二密文中的一个密文与目标密文匹配的情况下,确定待查询数据的查询结果为与目标数据库中的存储数据一致。本文中的设备可以是服务器、PC等。
本发明还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:确定用户端在当前时刻之前配置的历史加解密策略,以及当前时刻配置的当前加解密策略;获取结构化查询语句;对结构化查询语句进行解析,得到待查询数据和查询位置;采用历史加解密策略,对待查询数据进行加密,得到第一密文;采用当前加解密策略,对待查询数据进行加密,得到第二密文;基于查询位置,在与结构化查询语句进行交互的目标数据库中进行查询,得到目标密文;在第一密文或第二密文中的一个密文与目标密文匹配的情况下,确定待查询数据的查询结果为与目标数据库中的存储数据一致。
可选地,上述计算机程序产品还适用于执行初始化有如下方法步骤的程序:对结构化查询语句进行词法分析,生成按照结构化查询语句的语法结构生成抽象语法树,其中,抽象语法数据中的节点为结构化查询语句中语法元素,语法元素至少包括关键字,条件表达式,以及字符串;基于抽象语法树中的节点指示的关键字和条件表达式,确定查询位置;基于抽象语法树中的节点指示的字符串,确定待查询数据。
可选地,上述计算机程序产品还适用于执行初始化有如下方法步骤的程序:获取数据库驱动代理的数据库驱动信息,其中,数据库驱动代理用于用户端访问数据库层,数据库层中包括多个数据库,多个数据库分别对应不同的方言类型,目标数据库属于多个数据库;基于数据库驱动信息,生成代理连接,其中,代理连接使得用户端通过中间件访问数据库;采用代理连接对用户端发送的语句进行拦截,得到结构化查询语句。
可选地,上述计算机程序产品还适用于执行初始化有如下方法步骤的程序:采用代理连接对用户端发送的语句进行拦截,得到初始语句;基于历史加解密策略和当前加解密策略分别指示的解密方法,对初始语句进行组合加密,得到加密语句;将加密语句通过代理连接向数据库层进行传输,在加密语句传输至数据库层的情况下,基于历史加解密策略和当前加解密策略分别指示的解密方法,对加密语句进行组合解密,得到结构化查询语句。
可选地,上述计算机程序产品还适用于执行初始化有如下方法步骤的程序:确定结构化查询语句对应的目标方言类型,其中,目标方言类型为在结构化查询语句的语句变种类型;基于目标方言类型,在数据库层包括的多个数据库中确定目标数据库,其中,多个数据库分别对应不同的方言类型。
可选地,上述计算机程序产品还适用于执行初始化有如下方法步骤的程序:采用历史加解密策略,对待查询数据进行加密,得到第一密文,包括:采用历史加解密策略,对待查询数据进行加密,得到第三密文;采用目标方言类型,对第三密文进行调整,得到第一密文;采用当前加解密策略,对待查询数据进行加密,得到第二密文,包括:采用当前加解密策略,对待查询数据进行加密,得到第四密文;采用目标方言类型,对第四密文进行调整,得到第二密文。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (10)
1.一种数据查询方法,其特征在于,包括:
确定用户端在当前时刻之前配置的历史加解密策略,以及所述当前时刻配置的当前加解密策略;
获取结构化查询语句;
对所述结构化查询语句进行解析,得到待查询数据和查询位置;
采用所述历史加解密策略,对所述待查询数据进行加密,得到第一密文;
采用所述当前加解密策略,对所述待查询数据进行加密,得到第二密文;
基于所述查询位置,在与所述结构化查询语句进行交互的目标数据库中进行查询,得到目标密文;
在所述第一密文或所述第二密文中的一个密文与所述目标密文匹配的情况下,确定所述待查询数据的查询结果为与所述目标数据库中的存储数据一致。
2.根据权利要求1所述的方法,其特征在于,所述对所述结构化查询语句进行解析,得到待查询数据和查询位置,包括:
对所述结构化查询语句进行词法分析,生成按照所述结构化查询语句的语法结构生成抽象语法树,其中,所述抽象语法数据中的节点为所述结构化查询语句中语法元素,所述语法元素至少包括关键字,条件表达式,以及字符串;
基于所述抽象语法树中的节点指示的关键字和条件表达式,确定所述查询位置;
基于所述抽象语法树中的节点指示的字符串,确定所述待查询数据。
3.根据权利要求1所述的方法,其特征在于,所述获取结构化查询语句,包括:
获取数据库驱动代理的数据库驱动信息,其中,所述数据库驱动代理用于所述用户端访问数据库层,所述数据库层中包括多个数据库,所述多个数据库分别对应不同的方言类型,所述目标数据库属于所述多个数据库;
基于所述数据库驱动信息,生成代理连接,其中,所述代理连接使得所述用户端通过中间件访问所述数据库;
采用所述代理连接对所述用户端发送的语句进行拦截,得到所述结构化查询语句。
4.根据权利要求3所述的方法,其特征在于,所述代理连接中存储有所述历史加解密策略和所述当前加解密策略,所述采用所述代理连接对所述用户端发送的语句进行拦截,得到所述结构化查询语句,包括:
采用所述代理连接对所述用户端发送的语句进行拦截,得到初始语句;
基于所述历史加解密策略和所述当前加解密策略分别指示的解密方法,对所述初始语句进行组合加密,得到加密语句;
将所述加密语句通过所述代理连接向所述数据库层进行传输,在所述加密语句传输至所述数据库层的情况下,基于所述历史加解密策略和所述当前加解密策略分别指示的解密方法,对所述加密语句进行组合解密,得到所述结构化查询语句。
5.根据权利要求1所述的方法,其特征在于,在所述基于所述查询位置,在与所述结构化查询语句进行交互的目标数据库中进行查询,得到目标密文之前,所述方法还包括:
确定所述结构化查询语句对应的目标方言类型,其中,所述目标方言类型为在所述结构化查询语句的语句变种类型;
基于所述目标方言类型,在数据库层包括的多个数据库中确定所述目标数据库,其中,所述多个数据库分别对应不同的方言类型。
6.根据权利要求5所述的方法,其特征在于,
所述采用所述历史加解密策略,对所述待查询数据进行加密,得到第一密文,包括:采用所述历史加解密策略,对所述待查询数据进行加密,得到第三密文;采用所述目标方言类型,对所述第三密文进行调整,得到所述第一密文;
所述采用所述当前加解密策略,对所述待查询数据进行加密,得到第二密文,包括:采用所述当前加解密策略,对所述待查询数据进行加密,得到第四密文;采用所述目标方言类型,对所述第四密文进行调整,得到所述第二密文。
7.根据权利要求1至6中任意一项所述的方法,其特征在于,所述目标数据库中允许存在采用所述历史加解密策略进行加密的数据,以及采用所述当前加解密策略进行加密的数据。
8.一种数据查询装置,其特征在于,包括:
加解密策略确定模块,用于确定用户端在当前时刻之前配置的历史加解密策略,以及所述当前时刻配置的当前加解密策略;
语句获取模块,用于获取结构化查询语句;
语句解析模块,用于对所述结构化查询语句进行解析,得到待查询数据和查询位置;
第一密文生成模块,用于采用所述历史加解密策略,对所述待查询数据进行加密,得到第一密文;
第二密文生成模块,用于采用所述当前加解密策略,对所述待查询数据进行加密,得到第二密文;
存储密文查询模块,用于基于所述查询位置,在与所述结构化查询语句进行交互的目标数据库中进行查询,得到目标密文;
密文匹配模块,用于在所述第一密文或所述第二密文中的一个密文与所述目标密文匹配的情况下,确定所述待查询数据的查询结果为与所述目标数据库中的存储数据一致。
9.一种非易失性存储介质,其特征在于,所述非易失性存储介质存储有多条指令,所述指令适于由处理器加载并执行权利要求1至7中任意一项所述的数据查询方法。
10.一种电子设备,其特征在于,包括:一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311737667.5A CN117971859A (zh) | 2023-12-17 | 2023-12-17 | 数据查询方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311737667.5A CN117971859A (zh) | 2023-12-17 | 2023-12-17 | 数据查询方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117971859A true CN117971859A (zh) | 2024-05-03 |
Family
ID=90848475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311737667.5A Pending CN117971859A (zh) | 2023-12-17 | 2023-12-17 | 数据查询方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117971859A (zh) |
-
2023
- 2023-12-17 CN CN202311737667.5A patent/CN117971859A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4685782B2 (ja) | データベースのカラムを暗号化するための方法および装置 | |
US11269694B2 (en) | Automated API code generation | |
US9256638B2 (en) | Instance management of code in a database | |
CA2564681C (en) | Methods and systems for dynamically composing distributed interactive applications from high-level programming languages | |
US9424003B1 (en) | Schema-less system output object parser and code generator | |
US20040162822A1 (en) | Method and apparatus for converting in-line database queries to stored procedures | |
US20100042585A1 (en) | Command Interpretation | |
WO2019237333A1 (en) | Converting database language statements between dialects | |
US8386608B1 (en) | Service scripting framework | |
EP3312735B1 (en) | Program, method, and system for execution of software services | |
US20120173575A1 (en) | Record Based Code Structure | |
CN101137959A (zh) | 用于跨越远程边界传送计算机可读对象的系统和方法 | |
EP3809300A1 (en) | Method and apparatus for data encryption, method and apparatus for data decryption | |
CN113608748B (zh) | C语言转换Java语言的数据处理方法、装置及设备 | |
US10296363B2 (en) | Tuning a virtual machine startup parameter | |
US20240126761A1 (en) | System and methods for processing data queries in hybrid data mesh architectures | |
US6757672B2 (en) | Modifying a relational database | |
CN117971859A (zh) | 数据查询方法、装置、存储介质及电子设备 | |
KR101979320B1 (ko) | 메타정보 및 엔터프라이즈 프레임웍을 이용한 암호화 sql문 자동 생성 시스템 및 방법 | |
CN113204776B (zh) | 实现列加密的方法、装置、设备及存储介质 | |
US20240330571A1 (en) | Generating Target Schema Based on Source Schema and Query Expression | |
CN118861139A (zh) | 数据处理方法、装置、系统、存储介质及处理器 | |
CN118819623A (zh) | 基于sql语法的软件部署方法、介质及电子设备 | |
CN117521123A (zh) | 用于Saas平台的数据权限控制方法及处理器 | |
CN117892320A (zh) | 一种数据存取自动化加解密方法、系统、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |