CN115757489A - 数据库查询语句处理方法、装置、存储介质及电子设备 - Google Patents
数据库查询语句处理方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN115757489A CN115757489A CN202211426176.4A CN202211426176A CN115757489A CN 115757489 A CN115757489 A CN 115757489A CN 202211426176 A CN202211426176 A CN 202211426176A CN 115757489 A CN115757489 A CN 115757489A
- Authority
- CN
- China
- Prior art keywords
- page cache
- data corresponding
- memory
- query statement
- database query
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本公开提供了一种数据库查询语句处理方法、装置、存储介质及电子设备,涉及计算机技术领域。该方法包括:解析数据库查询语句,获得数据库查询语句中的目标页缓存;若内存中存在目标页缓存对应的明文数据,则执行数据库查询语句;若内存中不存在目标页缓存对应的明文数据,则利用白盒库文件,将磁盘中目标页缓存对应的密文数据加载到内存中,进而执行数据库查询语句。该方法能够通过白盒库文件隐藏密钥,解决密钥容易泄露的问题,并且不需要额外添加密钥相关代码。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据库查询语句处理方法、装置、存储介质及电子设备。
背景技术
SQLite(Structured Query Language lite,轻型结构化查询语音)是一款广泛应用于各种移动操作系统、嵌入式平台的轻量级数据库。其数据按照公开的格式标准存储在文件中,所以操作SQLite数据库文件的任何人可以读取、修改其中的信息,存在信息泄漏等安全隐患。针对此情况,可以在SQLite数据库基础上增加数据库文件的加密功能,如SQLCipher。
然而,现有的在SQLite数据库基础上增加数据库文件的加密方法,存在密钥容易泄露以及需要额外添加密钥相关代码的问题。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种数据库查询语句处理方法、装置、存储介质及电子设备,以解决密钥容易泄露以及需要额外添加密钥相关代码的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一个方面,提供一种数据库查询语句处理方法,包括:解析数据库查询语句,获得所述数据库查询语句中的目标页缓存;若内存中存在所述目标页缓存对应的明文数据,则执行所述数据库查询语句;若所述内存中不存在所述目标页缓存对应的明文数据,则利用白盒库文件,将磁盘中所述目标页缓存对应的密文数据加载到所述内存中,进而执行所述数据库查询语句。
在本公开可选实施例中,所述利用白盒库文件,将磁盘中所述目标页缓存对应的密文数据加载到所述内存中,包括:从所述磁盘中获取所述目标页缓存对应的密文数据;利用所述白盒库文件解密所述目标页缓存对应的密文数据,获得所述目标页缓存对应的明文数据;将所述目标页缓存对应的明文数据加载到所述内存中。
在本公开可选实施例中,在将磁盘中所述目标页缓存对应的密文数据加载到所述内存中之前,所述方法还包括:若所述内存的存储空间已满,则利用所述白盒库文件将所述内存中的明文数据加载到所述磁盘中。
在本公开可选实施例中,所述方法还包括:若所述内存中不存在所述目标页缓存对应的明文数据,则利用所述白盒库文件将所述内存中的明文数据加载到所述磁盘中。
在本公开可选实施例中,所述利用所述白盒库文件将所述内存中的明文数据加载到所述磁盘中,包括:获取所述内存中存在的本地页缓存对应的明文数据;利用所述白盒库文件加密所述本地页缓存对应的明文数据,获得所述本地页缓存对应的密文数据;将所述本地页缓存对应的密文数据加载到所述磁盘中。
在本公开可选实施例中,所述页缓存的数据结构是预先设置的,所述页缓存的数据结构包括数据预留区域。
在本公开可选实施例中,所述数据预留区域包括第一预留子区域和第二预留子区域;所述第一预留子区域用于存储所述页缓存对应的密文数据长度;所述第二预留子区域用于存储多余位对应的数据,所述多余位为所述页缓存对应的密文数据比所述页缓存对应的明文数据多的数据位。
在本公开可选实施例中,所述白盒库文件是根据密钥信息和加解密算法生成的,所述加解密算法为国密算法。
在本公开可选实施例中,所述白盒库文件是服务器生成并下发的;或者,所述密钥信息是所述服务器下发的。
根据本公开的又一个方面,提供一种数据库查询语句处理装置,其特征在于,包括:解析模块,用于解析数据库查询语句,获得所述数据库查询语句中的目标页缓存;执行模块,用于若内存中存在所述目标页缓存对应的明文数据,则执行所述数据库查询语句;以及,若所述内存中不存在所述目标页缓存对应的明文数据,则利用白盒库文件,将磁盘中所述目标页缓存对应的密文数据加载到所述内存中,进而执行所述数据库查询语句。
根据本公开的又一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的数据库查询语句处理方法。
根据本公开的又一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述的数据库查询语句处理方法。
本公开的实施例所提供的数据库查询语句处理方法,可以解析数据库查询语句,以获得该数据库查询语句中的目标页缓存,然后判断内存中是否存在该目标页缓存对应的明文数据;如果内存中存在该目标页缓存对应的明文数据,那么可以直接执行该数据库查询语句;如果内存中不存在该目标页缓存对应的明文数据,可以通过白盒库文件将磁盘中该目标页缓存对应的密文数据加载到内存中,进而可以执行该数据库查询语句。一方面,能够通过白盒库文件隐藏密钥,使得整个数据处理过程中不会出现明文密钥,解决密钥容易泄露的问题;另一方面,不需要额外添加密钥相关代码,减少开发人员处理加密密钥逻辑的工作。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的SQLite数据库的架构示意图;
图2是根据一示例性实施例示出的数据库查询语句处理方法的流程图;
图3是根据又一示例性实施例示出的数据库查询语句处理方法的流程图;
图4是根据又一示例性实施例示出的数据库查询语句处理方法的流程图;
图5是根据一示例性实施例示出的基于SQLJite数据库的数据加解密方法的流程图;
图6是根据一示例性实施例示出的数据库查询语句处理装置600的框图;和
图7是根据一示例性实施例示出的电子设备的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
本公开所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在至少一个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和步骤,也不是必须按所描述的顺序执行。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本说明书中,用语“一个”、“一”、“该”、“所述”和“至少一个”用以表示存在至少一个要素/组成部分/等;用语“包含”、“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”、“第二”和“第三”等仅作为标记使用,不是对其对象的数量限制。
SQLite数据库是一个进程内的轻量型嵌入式数据库。SQLite数据库不需要在系统中配置,可以直接使用。具体的,SQLite数据库可以应用于Linux、安卓(Android)、鸿蒙操作系统(Harmony Operating System,鸿蒙OS)、Mac、iOS、Windows和物联网操作系统等。
SQLite数据库是一种关系型数据库。关系型数据库存储的格式可以直观地反映实体间的关系。关系型数据库可以按照结构化的方法存储数据。每个数据表都必须预先定义好各个字段,再根据表的结构存入数据。如此一来,数据的形式和内容在存入数据之前就已经定义好了。关系型数据库大多遵循结构化查询语言(structured query language,SQL)标准。常见的操作有查询、新增、更新、删除、求和、排序等。
SQLite数据库按照公开的格式标准存储在一个文件之中,所以能够操作SQLite数据库文件的任何人都可以读取、修改其中的信息,存在信息泄漏等安全隐患。针对此情况,有开发人员在SQLite数据库的基础之上,增加了数据库文件的加密功能。具体的,用户在创建SQLite数据库文件的时候,可以设置一个密钥。由此生成的SQLite数据库文件为经过加密的文件,不再是标准的SQLite数据库文件,无法直接使用SQLite程序对其进行数据读取、修改等操作,需要通过相同的密钥对其中存储的数据进行解密之后才能读取、修改数据。
目前,存在多种加密SQLite数据库,如应用较为广泛的SQLCipher。接下来以SQLCipher为代表分析现有加密SQLit数据库存在的问题。具体如下:
(一)密钥容易泄漏
应用开发者在使用SQLCipher的过程中,需要自己实现不同用户的密钥生成管理。由于SQLCipher多运行在客户端(即用户终端设备)上,所以密钥生成部分的逻辑代码多数存在于客户端代码之中,被反编译分析之后,密钥相当于是公开的,导致密钥容易泄露。另外,很难对密钥相关算法逻辑进行升级,并且即使升级之后,也同样面临着再次被泄漏的风险。
(二)易用性问题
应用开发者在使用SQLCipher的过程中,需要自己实现密钥生成管理。如果从没有加密功能的SQLite升级为SQLCipher,需要额外添加密钥生成、管理相关的代码。
(三)加解密算法为公开代码
由于SQLCipher是开源项目,且加解密算法默认使用OpenSSL(Open SecureSockets Layer,开放式安全套接层协议)开源库,所以加解密算法的代码都是公开的。如果密钥相关逻辑代码被破解,则使用SQLCipher的应用就失去了数据加密的安全防护。并且,加解密算法依赖OpenSSL,存在合规风险。
为了解决上述问题,本公开实施例提供一种数据库查询语句处理方法及相关设备。下面,将结合附图及实施例对本公开示例实施例中的数据库查询语句处理方法的各个步骤进行更详细的说明。
图1是根据一示例性实施例示出的SQLite数据库的架构示意图。如图1所示,SQLite数据库可以包括:前端、编译器和后端。其中,前端又可以称为内核,可以应用程序接口(Api Interface,Api接口)、SQL命令处理器(SQL command processor)和虚拟机(virtual machine)。编译器包括词法分析器(tokenizer)、语法分析器(parser)、代码生成器(code generator)。后端包括B-树(B-tree)模块、页缓存(page cache,pager)模块和操作系统接口(OS Interface,OS接口)。
SQLite数据库的工作流程主要是将SQL文本编译成字节码,然后在虚拟机上运行这些字节代码。下面结合SQL数据库的工作流程说明SQL数据库中各部分的工作原理。
程序、脚本语言或者库文件可以通过Api接口与SQLite数据库交互。比如,Api接口可以将来自外部的SQL文本发送给SQL命令处理器。当一条SQL文本要被编译时,SQL命令处理器首先将它发送给编译器。在编译器中,词法分析器和语法分析器可以对SQL语句进行语法检查,然后将它转化为底层能更方便处理的分层的数据结构。示例性地,词法分析器可以将SQL文本分解成词,然后将它一个个交给语法分析器。语法分析器可以根据此的上下文赋予它语义。语法分析器将词转化为语法树,发送给代码生成器。代码生成器分析语法树,并且生成符合SQL功能的字节代码。代码生成器输出的字节代码最终由虚拟机来执行。
B-tree模块和pager模块共同对数据进行管理。B-tree模块的主要功能是索引,它维护者各个页面之间的复杂的关系,便于快速找到所需数据。pager模块可通过操作系统在B-tree模块和磁盘间传递页面。
OS接口也就是系统调用的接口。为了提供跨操作系统移植性,SQLite使用名为虚拟文件系统的抽象对象。每个虚拟文件系统提供对磁盘文件的打开、关闭以及读写方法,以及其他特定于操作系统的功能,比如在当前时间,为伪随机数生成器设置随机种子等。
此外,SQLite数据库还可以包括附件(图1未示出),如实用工具和测试代码。实用工具也可以称为通用库,可用于实现内存分配、字符串比较例程、可移植的字符串到数字的转换例程等。在src文件夹中,以test开头的文件为测试代码,不被包含在标准库版本中。
上文已经说明,现有的加密SQLite数据库存在密钥容易泄露以及需要额外添加密钥相关代码的问题,并且加解密算法为公开代码。本公开实施例提供一种加密SQLite数据库,可以命名为SQLJite数据库,其是指在SQLite数据库的基础上改进的能够通过白盒库文件进行数据加解密操作的数据库。下面结合具体实施例说明基于SQLJite数据库的数据库查询语句处理方法。
图2是根据一示例性实施例示出的数据库查询语句处理方法的流程图。本申请实施例提供的数据库查询语句处理方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、个人计算机(personal computer,PC)、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、分布式设备等电子设备。本申请实施例对电子设备的具体类型不作任何限定。
如图2所示,本公开实施例提供的数据库查询语句处理方法可以包括以下步骤S201至步骤S203。
步骤S201:解析数据库查询语句,获得数据库查询语句中的目标页缓存。
其中,数据库查询语句可以为用户输入的查询、修改等SQL命令。当前端解析完SQL命令后,需要对数据库进行操作时,会通过B-tree模块查找需要的页面,B-tree模块维护着磁盘各页面之间的复杂关系,B-tree模块不会直接读写磁盘,它会通过调用pager模块来获取所需的页面或修改页面,pager模块的作用可以说是B-tree模块和磁盘读写的中间代理。
pager模块作为事务管理器,实现了数据库的原子性、一致性、隔离性以及持久性,从而支持并发控制和存储失败后的恢复;pager模块作为数据管理器,定义了固定长度的页面来访问数据库文件,通过页面缓存来加快页面的查找。
在步骤S201中,对数据库查询语句进行解析,可以获取该数据库查询语句中的目标页缓存,即需要操作的页面。
步骤S202:若内存中存在目标页缓存对应的明文数据,则执行数据库查询语句。
为了提高数据库的数据处理效率,内存中存储的数据为明文状态。因此在获取到需要操作的目标页缓存后,可以判断内存中是否存在该目标页缓存对应的明文数据。如果存在,则可以直接进行操作。
步骤S203:若内存中不存在目标页缓存对应的明文数据,则利用白盒库文件,将磁盘中目标页缓存对应的密文数据加载到内存中,进而执行数据库查询语句。
如果判断内存中不存在该目标页缓存对应的明文数据,则说明该目标页缓存对应的数据存储在磁盘中。此种情况下,需要将磁盘中存储的该目标页缓存对应的数据加载到内存中。为了保证数据的安全性,磁盘中存储的数据为加密数据,即磁盘中存储该目标页缓存对应的密文数据。以及,在加载到内存的过程中,需要将该目标页缓存对应的密文数据进行解密后再加载到内存中。
本公开实施例中,可以通过白盒库文件进行数据加解密操作。其中,白盒库文件是根据密钥信息和加解密算法生成的。具体的,采用白盒对称加密技术将密钥和加解密算法进行融合,生成白盒库二进制文件。每个白盒库文件对应其特定的密钥和加解密算法。在数据加密的时候,加载白盒库文件之后,即可对明文数据进行加密操作,整个加密过程中不会出现密钥信息。相应的,在数据解密的时候,加载白盒库文件之后,即可对密文数据进行解密操作,整个解密过程也不会出现密钥信息。可见,通过白盒库文件进行数据加解密操作时,整个数据处理过程中不会出现明文密钥,能够解决密钥容易泄露的问题。并且,通过白盒库文件进行数据加解密操作,只要加载白盒库文件,即可对数据进行加解密操作,不需要额外添加密钥相关代码,减少开发人员接入成本。
进一步的,本公开实施例中的加解密算法可以为国密算法。相关技术中,加解密算法默认使用OpenSSL开源库,所以加解密算法的代码都是公开的,并且加解密算法依赖OpenSSL,存在合规风险。本公开实施例中,可以采用国密算法生成白盒库文件,解决了加解密算法的代码是公开的问题,还能够避免依赖OpenSSL,增加数据库的安全性。
其中,国密算法为国家商用密码算法,是由国家密码管理局认定和公布的密码算法标准及其应用规范,其中部分密码算法已经成为国际标准。如SM系列密码,SM代表商密,即商业密码,是指用于商业的、不涉及国家秘密的密码技术。具体的,SM1是一种对称加密算法中的分组加密算法,采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域;SM2是非对称加密算法,其是基于椭圆曲线密码的公钥密码算法标准,可以满足电子认证服务系统等应用需求;SM3是一种密码杂凑算法,适用于数字签名和验证、消息认证码的生成与验证以及随机数的生成,可以满足电子认证服务系统等应用需求;SM4与SM1类似,其是分组加密算法,适用于密码应用中使用分组密码的需求;SM7也是一种分组加密算法,SM7适用于非接IC卡应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通、公交一卡通);SM9是基于标识的非对称密码算法,SM9主要用于用户的身份认证。
本公开实施例中,可以采用SM4算法和密钥生成白盒库文件。SM4算法是自主设计的分组对称密码算法,用于实现数据的加密/解密运算,能够保证数据和信息的机密性。要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法的密钥长度分组长度为128比特,安全性能高。
SQLite数据库作为一款轻量级数据库,其多用于移动应用中,即SQLite数据库多数运行在客户端(即用户设备)上。为了保证白盒库文件的安全性,可以通过服务器向客户端(即用户设备)下发密钥信息,然后客户端可以利用密钥信息和加解密算法生成白盒库文件,进而在使用SQLite数据库时,通过白盒库文件加解密数据。
可选的,可以通过服务器生成白盒库文件,然后向客户端(即用户设备)下发,以便客户端可以利用白盒库文件对数据进行加解密操作。由于白盒库文件是根据密钥和加解密算法混合生成的,并且是有服务器下发的,因此客户端无法从白盒库文件中恢复出密钥。如此,不同密钥生成逻辑可以脱离客户端,由服务器控制,因此即使白盒库文件被拦截也不会泄露密钥,使得白盒库文件具有更高的安全性,并且白盒库文件可以与客户端(即用户设备)绑定,能够进一步保证白盒库文件的安全性。
此外,白盒库文件是服务器下发的,能够在提升安全性的同时,还能够简化接入加密数据库的成本,不需要额外添加密钥生成逻辑,进而提高SQL语句执行效率。
本公开实施例中,页缓存的数据结构是预先设置的,页缓存的数据结构包括数据预留区域。内存中存储页缓存对应的明文数据,磁盘中存储页缓存对应的密文数据。由于页缓存对应的密文数据是通过白盒库文件对相应明文数据进行加密生成的,并且白盒库文件是根据密钥信息和国密算法生成的,所以页缓存对应的密文数据长度可能会超过页缓存对应的明文数据长度。为了保证数据加解密操作不会导致数据的丢失,可以预先设置页缓存的数据结构,该页缓存的数据结构可以包括数据预留区域。该数据预留区域用于存储与密文数据相关的信息,页缓存对应的明文数据不会存储在该数据预留区域。
进一步的,数据预留区域可以包括第一预留子区域和第二预留子区域。其中,第一预留子区域可以用于存储页缓存对应的密文数据长度。比如,加密后的密文数据长度为1100,那么第一预留子区域可以用于存储长度1100。第二预留子区域可以用于存储多余位对应的数据,多余位为页缓存对应的密文数据比页缓存对应的明文数据多的数据位。比如,加密后的密文数据长度为1100,明文数据长度为1024,那么第二预留子区域可以用于存储密文数据比明文数据多出来的76位数据。
本公开实施例中,通过第一预留子区域存储页缓存对应的密文数据长度,以及通过第二预留子区域存储多余位对应的数据,可以保证密文数据的完整性,保证密文数据不会丢失,并且在对数据进行解密时,可以对完整的密文数据进行解密,提高明文数据的准确性。
在步骤S203中,如果判断内存中不存在该目标页缓存对应的明文数据,利用白盒库文件将磁盘中存储的该目标页缓存对应的数据加载到内存中。其中,将数据加载到内存中的具体实现可以为:从磁盘中获取目标页缓存对应的密文数据;利用白盒库文件解密目标页缓存对应的密文数据,获得目标页缓存对应的明文数据;将目标页缓存对应的明文数据加载到内存中。
在本公开实施例中,在将磁盘中目标页缓存对应的密文数据加载到内存中之前,数据库查询语句处理方法还可以包括:若内存的存储空间已满,则利用白盒库文件将内存中的明文数据加载到磁盘中。
具体的,在判断内存中不存着该目标页缓存对应的明文数据后,可以判断内存的存储空间是否已满。如果内存的存储空间已满,则可以利用白盒库文件,将内存中的不需要操作的页缓存对应的明文数据加载到磁盘中,然后可以将目标页缓存对应的数据加载到内存中。
本公开实施例中,在将目标页缓存对应的数据加载到内存之前,可以先判断内存空间是否已满;如果内存空间已满,可以将内存中不需要操作的页缓存对应的明文数据加载到磁盘中。如此,可以保证目标页缓存对应的数据可以加载到内存中。
进一步的,利用白盒库文件将内存中的明文数据加载到磁盘中,可以包括:获取内存中存在的本地页缓存对应的明文数据;利用白盒库文件加密本地页缓存对应的明文数据,获得本地页缓存对应的密文数据;将本地页缓存对应的密文数据加载到磁盘中。其中,本地页缓存可以理解为内存中的不需要操作的页缓存。具体的,如果内存中包括多个不需要操作的页缓存对应的明文数据,可以随机选择不需要操作的页缓存,将其对应的明文数据加载到磁盘中;可以将所有不需要操作的页缓存对应的明文数据加载到内存中;可以根据页缓存加载到内存中的顺序,选择加载到内存时间最长的页缓存,将其对应的明文数据加载到磁盘中。当然,也可以采用其他方法将内存中的不需要操作的页缓存对应的明文数据加载到磁盘中,本公开实施例对此不作限定。
图3是根据又一示例性实施例示出的数据库查询语句处理方法的流程图。如图3所示,该数据库查询语句处理方法可以包括:
步骤S301,解析数据库查询语句,获得数据库查询语句中的目标页缓存;
步骤S302:判断内存中是否存在目标页缓存对应的明文数据,若是,则执行步骤S303,若否,则执行步骤S304;
步骤S303,执行数据库查询语句;
步骤S304,判断内存的存储空间是否已满,若是,则执行步骤S305,若否,则执行步骤S306;
步骤S305,利用白盒库文件将内存中的明文数据加载到磁盘中;
步骤S306,利用白盒库文件将磁盘中目标页缓存对应的密文数据加载到内存中,进而执行数据库查询语句。
上文已经说明,利用白盒库文件将内存中的明文数据加载到磁盘中的具体实现,以及利用白盒库文件将磁盘中目标页缓存对应的密文数据加载到内存中的具体实现,此处不再赘述。
为了保证数据库的数据处理效率,可以在判断内存中不存在目标页缓存对应的明文数据的情况下,就利用白盒库文件将内存中的明文数据加载到磁盘中。也就是说,在判断内存中不存在目标页缓存对应的明文数据之后,不判断内存空间是否已满,直接利用白盒库文件将内存中不需要操作的明文数据加载到磁盘中。如此,可以保证内存中只有最少的需要参与操作的页缓存对应的明文数据,能够提高数据库的数据处理效率。上文已经说明,利用白盒库文件将内存中的明文数据加载到磁盘中的具体实现,此处不再赘述。
图4是根据又一示例性实施例示出的数据库查询语句处理方法的流程图。如图4所示,该数据库查询语句处理方法可以包括:
步骤S401,解析数据库查询语句,获得数据库查询语句中的目标页缓存;
步骤S402:判断内存中是否存在目标页缓存对应的明文数据,若是,则执行步骤S403,若否,则执行步骤S404;
步骤S403,执行数据库查询语句;
步骤S404,利用白盒库文件将内存中的明文数据加载到磁盘中;
步骤S405,利用白盒库文件将磁盘中目标页缓存对应的密文数据加载到内存中,进而执行数据库查询语句。
上文已经说明,利用白盒库文件将内存中的明文数据加载到磁盘中的具体实现,以及利用白盒库文件将磁盘中目标页缓存对应的密文数据加载到内存中的具体实现,此处不再赘述。另外,需要说明的是,步骤S404和步骤S405的执行顺序可以根据实际情况调整,本公开实施例对此不作限定。
图5是根据一示例性实施例示出的基于SQLJite数据库的数据加解密方法的流程图。如图5所示,基于SQLJite数据库的加解密方案是在SQLite数据库的页缓存和操作系统接口之间加入数据加解密操作,其具体实现为:判断是否需要操作新的页缓存,即需要操作的页缓存是否为内存中的页缓存;若不需要操作新的页缓存,则说明内存中已经存在需要操作的页缓存对应的明文数据,后续可以直接执行SQL语句;若需要操作新的页缓存,则说明内存中不存在需要操作的页缓存,那么可以将页缓存中的旧的页缓存对应的明文数据加载到磁盘中,以及从磁盘中解密新的页缓存对应的密文数据到内存中。
其中,将页缓存中的旧的页缓存对应的明文数据加载到磁盘中的过程可以为:从内存中获取旧的缓存对应的明文数据,通过白盒库文件对获取的明文数据进行加密,然后将得到的加密数据存储到磁盘。
以及,从磁盘中解密新的页缓存对应的密文数据到内存中的过程可以为:从磁盘中获取新的页缓存对应的密文数据,通过白盒库文件对获取的密文数据进行解密,然后将解密后的明文数据加载到内存,后续可以执行SQL语句。
本公开实施例提供的SQLJite数据库,是在SQLite数据库的页缓存和操作系统接口之间加入数据加解密操作,能够通过白盒库文件隐藏密钥,使得整个数据处理过程中不会出现明文密钥,解决密钥容易泄露的问题,并且不需要额外添加密钥相关代码,减少开发人员处理加密密钥逻辑的工作。
还应理解,上述只是为了帮助本领域技术人员更好地理解本公开实施例,而非要限制本公开实施例的范围。本领域技术人员根据所给出的上述示例,显然可以进行各种等价的修改或变化,例如,上述方法中某些步骤可以是不必须的,或者可以新加入某些步骤等。或者上述任意两种或者任意多种实施例的组合。这样的修改、变化或者组合后的方案也落入本公开实施例的范围内。
还应理解,上文对本公开实施例的描述着重于强调各个实施例之间的不同之处,未提到的相同或相似之处可以互相参考,为了简洁,这里不再赘述。
还应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。
还应理解,在本公开的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。
上文详细介绍了本公开提供的数据库查询语句处理方法示例。可以理解的是,计算机设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本公开能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
图6是根据一示例性实施例示出的数据库查询语句处理装置600的框图。参照图6,该装置包括:解析模块601和执行模块602。
其中,解析模块601可用于:解析数据库查询语句,获得数据库查询语句中的目标页缓存。执行模块602可用于:若内存中存在目标页缓存对应的明文数据,则执行数据库查询语句;若内存中不存在目标页缓存对应的明文数据,则利用白盒库文件,将磁盘中目标页缓存对应的密文数据加载到内存中,进而执行数据库查询语句。
在本公开可选实施例中,执行模块602可以包括:数据加载子模块6021。其中,数据加载子模块6021可用于:从磁盘中获取目标页缓存对应的密文数据;利用白盒库文件解密目标页缓存对应的密文数据,获得目标页缓存对应的明文数据;将目标页缓存对应的明文数据加载到内存中。
在本公开可选实施例中,数据加载子模块6021还可用于:若内存的存储空间已满,则利用白盒库文件将内存中的明文数据加载到磁盘中。
在本公开可选实施例中,数据加载子模块6021还可用于:若内存中不存在目标页缓存对应的明文数据,则利用白盒库文件将内存中的明文数据加载到磁盘中。
在本公开可选实施例中,数据加载子模块6021还可用于:获取内存中存在的本地页缓存对应的明文数据;利用白盒库文件加密本地页缓存对应的明文数据,获得本地页缓存对应的密文数据;将本地页缓存对应的密文数据加载到磁盘中。
在本公开可选实施例中,页缓存的数据结构是预先设置的,页缓存的数据结构包括数据预留区域。
在本公开可选实施例中,数据预留区域包括第一预留子区域和第二预留子区域;第一预留子区域用于存储页缓存对应的密文数据长度;第二预留子区域用于存储多余位对应的数据,多余位为页缓存对应的密文数据比页缓存对应的明文数据多的数据位。
在本公开可选实施例中,白盒库文件是根据密钥信息和加解密算法生成的,加解密算法为国密算法。
在本公开可选实施例中,白盒库文件是服务器生成并下发的;或者,密钥信息是服务器下发的,以利用密钥信息生成白盒库文件。
需要注意的是,上述附图中所示的框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器终端设备和/或微控制器终端设备中实现这些功能实体。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7是根据一示例性实施例示出的电子设备的结构框图。下面参照图7来描述根据本公开的这种实施例的电子设备700。图7显示的电子设备700仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图7所示,电子设备700以通用计算设备的形式表现。电子设备700的组件可以包括但不限于:上述至少一个处理单元710、上述至少一个存储单元720、连接不同系统组件(包括存储单元720和处理单元710)的总线730、显示单元740。
其中,存储单元存储有程序代码,程序代码可以被处理单元710执行,使得处理单元710执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。例如,处理单元710可以执行如图2中所示的各个步骤。
又如,电子设备可以实现如图2所示的各个步骤。
存储单元720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)721和/或高速缓存存储单元722,还可以进一步包括只读存储单元(ROM)723。
存储单元720还可以包括具有一组(至少一个)程序模块725的程序/实用工具724,这样的程序模块725包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备700也可以与一个或多个外部设备770(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备700交互的设备通信,和/或与使得该电子设备700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口750进行。并且,电子设备700还可以通过网络适配器760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器760通过总线730与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法。可选地,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时实现上述实施例中的编码单元的处理方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (12)
1.一种数据库查询语句处理方法,其特征在于,包括:
解析数据库查询语句,获得所述数据库查询语句中的目标页缓存;
若内存中存在所述目标页缓存对应的明文数据,则执行所述数据库查询语句;
若所述内存中不存在所述目标页缓存对应的明文数据,则利用白盒库文件,将磁盘中所述目标页缓存对应的密文数据加载到所述内存中,进而执行所述数据库查询语句。
2.根据权利要求1所述的方法,其特征在于,所述利用白盒库文件,将磁盘中所述目标页缓存对应的密文数据加载到所述内存中,包括:
从所述磁盘中获取所述目标页缓存对应的密文数据;
利用所述白盒库文件解密所述目标页缓存对应的密文数据,获得所述目标页缓存对应的明文数据;
将所述目标页缓存对应的明文数据加载到所述内存中。
3.根据权利要求1所述的方法,其特征在于,在将磁盘中所述目标页缓存对应的密文数据加载到所述内存中之前,所述方法还包括:
若所述内存的存储空间已满,则利用所述白盒库文件将所述内存中的明文数据加载到所述磁盘中。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述内存中不存在所述目标页缓存对应的明文数据,则利用所述白盒库文件将所述内存中的明文数据加载到所述磁盘中。
5.根据权利要求3或4所述的方法,其特征在于,所述利用所述白盒库文件将所述内存中的明文数据加载到所述磁盘中,包括:
获取所述内存中存在的本地页缓存对应的明文数据;
利用所述白盒库文件加密所述本地页缓存对应的明文数据,获得所述本地页缓存对应的密文数据;
将所述本地页缓存对应的密文数据加载到所述磁盘中。
6.根据权利要求1至4任一所述的方法,其特征在于,所述页缓存的数据结构是预先设置的,所述页缓存的数据结构包括数据预留区域。
7.根据权利要求6所述的方法,其特征在于,所述数据预留区域包括第一预留子区域和第二预留子区域;
所述第一预留子区域用于存储所述页缓存对应的密文数据长度;
所述第二预留子区域用于存储多余位对应的数据,所述多余位为所述页缓存对应的密文数据比所述页缓存对应的明文数据多的数据位。
8.根据权利要求1至4任一所述的方法,其特征在于,所述白盒库文件是根据密钥信息和加解密算法生成的,所述加解密算法为国密算法。
9.根据权利要求8所述的方法,其特征在于,所述白盒库文件是服务器生成并下发的;或者,所述密钥信息是所述服务器下发的。
10.一种数据库查询语句处理装置,其特征在于,包括:
解析模块,用于解析数据库查询语句,获得所述数据库查询语句中的目标页缓存;
执行模块,用于若内存中存在所述目标页缓存对应的明文数据,则执行所述数据库查询语句;以及,若所述内存中不存在所述目标页缓存对应的明文数据,则利用白盒库文件,将磁盘中所述目标页缓存对应的密文数据加载到所述内存中,进而执行所述数据库查询语句。
11.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1至9任一项所述的数据库查询语句处理方法。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至9任一项所述的数据库查询语句处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211426176.4A CN115757489A (zh) | 2022-11-14 | 2022-11-14 | 数据库查询语句处理方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211426176.4A CN115757489A (zh) | 2022-11-14 | 2022-11-14 | 数据库查询语句处理方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115757489A true CN115757489A (zh) | 2023-03-07 |
Family
ID=85371187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211426176.4A Pending CN115757489A (zh) | 2022-11-14 | 2022-11-14 | 数据库查询语句处理方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115757489A (zh) |
-
2022
- 2022-11-14 CN CN202211426176.4A patent/CN115757489A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109299131B (zh) | 一种支持可信计算的spark查询方法及系统 | |
CN108900464B (zh) | 电子装置、基于区块链的数据处理方法和计算机存储介质 | |
CN110414268B (zh) | 访问控制方法、装置、设备及存储介质 | |
CN105683990B (zh) | 用于保护动态库的方法和装置 | |
RU2439669C2 (ru) | Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения | |
US7587608B2 (en) | Method and apparatus for storing data on the application layer in mobile devices | |
US20160371495A1 (en) | Controlled access to data in a sandboxed environment | |
US20080288921A1 (en) | Transformations for Software Obfuscation and Individualization | |
CN105446713A (zh) | 安全存储方法及设备 | |
US20110271350A1 (en) | method for protecting software | |
CN109657488A (zh) | 一种资源文件加密处理方法、智能终端及存储介质 | |
CN103065072A (zh) | 提高Java软件破解难度的方法及装置、版权验证方法 | |
Demsky | Cross-application data provenance and policy enforcement | |
US20080034202A1 (en) | Method and apparatus for preventing rogue implementations of a security-sensitive class interface | |
CN112052433B (zh) | 一种Jar文件的虚拟化保护方法、终端及存储介质 | |
CN110597496B (zh) | 应用程序的字节码文件获取方法及装置 | |
CN114626079A (zh) | 基于用户权限的文件查看方法、装置、设备及存储介质 | |
CN101447009A (zh) | 软件安装方法、装置及系统 | |
US20050289358A1 (en) | Method and system for sensitive information protection in structured documents | |
CN116910712A (zh) | 代码保护方法、系统、电子设备及存储介质 | |
CN117150515A (zh) | Eda二次开发源代码的安全保护方法、电子设备及存储介质 | |
CN112328975A (zh) | 一种产品软件授权管理方法、终端设备及介质 | |
Lee et al. | Classification and analysis of security techniques for the user terminal area in the internet banking service | |
CN116028945A (zh) | 防止执行注入的恶意代码的保护 | |
CN114116059B (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 |