一种数据存储方法及装置与流程

文档序号:16431782发布日期:2018-12-28 20:12阅读:231来源:国知局
一种数据存储方法及装置与流程

本申请涉及数据处理领域,特别是涉及一种数据存储方法及装置。

背景技术

关系型数据库可以用于存储数据。一般来讲,大型数据库中会有成百上千张数据库表,每个数据库表均对应一个真实存在的物理文件,这个物理文件用于存储数据库表中的内容。在本申请中,将存储数据库表中的内容的物理文件称为数据库表文件。

随着网络技术的发展,为防止数据库中存储的数据被攻击,往往需要对数据库中存储的内容进行加密。目前,可以利用加密插件来进行加密,但是,利用加密插件进行加密时,并不是对数据库表文件中存储的数据进行加密,而是将从数据库表文件中存储的数据读取出来,加密之后显示给用户。

也就是说,利用加密插件进行加密的方式,由于数据库表文件中存储的数据并未被加密,一旦数据库表文件被攻击,数据库表文件中存储的数据就会被泄露,安全隐患比较大。

因此,急需提出一种方案解决上述问题。



技术实现要素:

本申请所要解决的技术问题是:由于数据库表文件中存储的数据并未被加密,一旦数据库表文件被攻击,数据库表文件中存储的数据就会被泄露,安全隐患比较大。提供一种数据存储方法及装置。

第一方面,本申请实施例提供了一种数据存储方法,包括:

获取数据库表创建语句;所述数据库表创建语句中携带有加密关键字;

对所述数据库表创建语句中的目标数据进行加密;所述目标数据为所述加密关键字对应的字段对应的数据;

将加密后的目标数据写入到数据库表文件中。

可选的,所述加密关键字对应的字段包括:所述数据库表创建语句中携带的任意一个或者多个字段。

可选的,所述方法还包括:

将所述加密关键字和所述加密关键字对应的字段的标识写入到数据库的加密信息存储文件中。

可选的,所述方法还包括:

获取数据查询语句;所述查询语句中携带有存储待查询数据的数据库表文件的标识和所述待查询数据包括的字段的标识;

利用所述存储待查询数据的数据库表文件的标识、所述待查询数据包括的字段的标识,以及所述加密信息存储文件,确定所述待查询数据包括的字段是否对应有加密关键字;

将对应有加密关键字的字段对应的数据从所述数据库表文件中提取出来,并对所述对应有加密关键字的字段对应的数据进行解密;

显示对所述对应有加密关键字的字段对应的数据进行解密后的数据。

可选的,所述加密信息存储文件包括:

数据字典。

第二方面,本申请实施例提供了一种数据存储装置,包括:

第一获取单元,用于获取数据库表创建语句;所述数据库表创建语句中携带有加密关键字;

加密单元,用于对所述数据库表创建语句中的目标数据进行加密;所述目标数据为所述加密关键字对应的字段对应的数据;

第一写入单元,用于将加密后的目标数据写入到数据库表文件中。

可选的,所述加密关键字对应的字段包括:所述数据库表创建语句中携带的任意一个或者多个字段。

可选的,所述装置还包括:

第二写入单元,用于将所述加密关键字和所述加密关键字对应的字段的标识写入到数据库的加密信息存储文件中。

可选的,所述装置还包括:

第二获取单元,用于获取数据查询语句;所述查询语句中携带有存储待查询数据的数据库表文件的标识和所述待查询数据包括的字段的标识;

确定单元,用于利用所述存储待查询数据的数据库表文件的标识、所述待查询数据包括的字段的标识,以及所述加密信息存储文件,确定所述待查询数据包括的字段是否对应有加密关键字;

提取单元,用于将对应有加密关键字的字段对应的数据从所述数据库表文件中提取出来,并对所述对应有加密关键字的字段对应的数据进行解密;

显示单元,用于显示对所述对应有加密关键字的字段对应的数据进行解密后的数据。

可选的,所述加密信息存储文件包括:

数据字典。

与现有技术相比,本申请实施例具有以下优点:

本申请实施例提供一种数据存储方法及装置,包括:获取数据库表创建语句;所述数据库表创建语句中携带有加密关键字;对所述数据库表创建语句中的目标数据进行加密;所述目标数据为所述加密关键字对应的字段对应的数据;将加密后的目标数据写入到数据库表文件中。也就是说,本申请实施例提供的方案,在创建数据库表的语句中增加了一个标志是否需要对数据进行加密的加密关键字,若需要对特定字段对应的数据进行加密,则在创建该数据库表时,可以在数据库表创建语句中为该字段添加加密关键字。这样一来,将数据写入数据库表文件中时,就可以根据加密关键字确定需要加密的目标数据,从而将加密后的目标数据写入到数据库表文件中,这样一来,即使数据库表文件被攻击,由于数据库表文件中存储的是加密后的目标数据,故而降低了目标数据被泄露的风险。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种数据存储方法的流程示意图;

图2为本申请实施例提供的一种数据查询方法的流程示意图;

图3为本申请实施例提供的一种数据存储装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的发明人经过研究发现,为防止数据库中存储的数据被攻击,往往需要对数据库中存储的内容进行加密。目前,可以利用加密插件来进行加密,但是,利用加密插件进行加密时,并不是对数据库表文件中存储的数据进行加密,而是将从数据库表文件中存储的数据读取出来,加密之后显示给用户。也就是说,利用加密插件进行加密的方式,由于数据库表文件中存储的数据并未被加密,一旦数据库表文件被攻击,数据库表文件中存储的数据就会被泄露,安全隐患比较大。

为了解决上述问题,本申请实施例提供了一种数据存储方法及装置,包括:获取数据库表创建语句;所述数据库表创建语句中携带有加密关键字;对所述数据库表创建语句中的目标数据进行加密;所述目标数据为所述加密关键字对应的字段对应的数据;将加密后的目标数据写入到数据库表文件中。

也就是说,本申请实施例提供的方案,在创建数据库表的语句中增加了一个标志是否需要对数据进行加密的加密关键字,若需要对特定字段对应的数据进行加密,则在创建该数据库表时,可以在数据库表创建语句中为该字段添加加密关键字。这样一来,将数据写入数据库表文件中时,就可以根据加密关键字确定需要加密的目标数据,从而将加密后的目标数据写入到数据库表文件中,这样一来,即使数据库表文件被攻击,由于数据库表文件中存储的是加密后的目标数据,故而降低了目标数据被泄露的风险。

为方便理解,首先对数据库中涉及的基本概念进行介绍。

数据库表:数据库表,简称表,是数据库最重要的组成部分之一。数据库只是一个框架,数据表才是其实质内容。如在一个“教学管理系统”中,教学管理的数据库包含6张表,分别围绕特定主题:“教师”表、“课程”表、“成绩”表、“学生”表、“班级”表以及“授课”表,用来管理教学过程中学生、教师、课程等相关信息。这些各自独立的数据表通过建立关系被联接起来,成为可以交叉查阅、一目了然的数据库。

记录:我们把表中的每一行叫做一个“记录”,每一个记录包含这行中的所有信息,就像在通讯录数据库中某个人全部的信息,但记录在数据库中并没有专门的记录名,常常用它所在的行数表示这是第几个记录。

字段:在数据库中,大多数时,表的“列”称为“字段”,每个字段包含某一专题的信息。例如,在“学生”表中,可以包括“班级”、“姓名”、“性别”、以及“学号”等字段。

在数据库中存放在表行列交叉处的数据叫做“值”,它是数据库中最基本的存储单元,它的位置要由这个表中的记录和字段来定义。

数据库表文件:在数据库中,每一个表都对应一个物理真实存在的表文件。数据库表中的内容通过表文件的形式,存储在物理磁盘上。

数据字典:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。简而言之,数据字典是描述数据的信息集合,是对系统中使用的所有数据元素的定义的集合。

下面结合附图,详细说明本申请的各种非限制性实施方式。

示例性方法

参见图1,该图为本申请实施例提供的一种数据存储方法的流程示意图。

本申请实施例提供的数据存储方法,例如可以由数据库服务器来实现。

所述方法例如可以通过以下步骤s101-s103实现。

s101:获取数据库表创建语句;所述数据库表创建语句中携带有加密关键字。

需要说明的是,此处提及的数据库表创建语句,例如可以为结构化查询语言(structuredquerylanguage,sql)中的“create”语句。

需要说明的是,本申请实施例不具体限定所述加密关键字,所述加密关键字可以根据实际情况确定,作为一种示例,所述加密关键字可以为“data_encrypted(中文:数据加密)”。

s102:对所述数据库表创建语句中的目标数据进行加密,所述目标数据为所述加密关键字对应的字段对应的数据。

可以理解的是,获取到所述数据库表创建语句之后,可以对该数据库表创建语句进行解析,获得所述加密关键字。

需要说明的是,在本申请实施例中,所述加密关键字与待创建的数据库表中的字段具有对应关系。也就是说,获得所述待加密关键字之后,即可以确定该加密关键字对应的字段,从而将该加密关键字对应的字段所对应的数据作为待加密的目标数据。

需要说明的是,在本申请实施例中,可以利用加密密钥对所述目标数据进行加密,本申请实施例不具体限定所述加密密钥,所述加密密钥可以根据实际情况确定。

如前文所述,目前,可以利用加密插件来进行加密。一方面,利用加密插件进行加密时,并不是对数据库表文件中存储的数据进行加密,而是将从数据库表文件中存储的数据读取出来,加密之后显示给用户。另一方面,利用加密插件进行加密时,只能对特定字段对应的数据进行加密,用户不能自主确定需要加密的数据。

需要说明的是,本申请实施例不具体限定所述加密关键字对应的字段,所述加密关键字对应的字段可以为所述数据库表创建语句中携带的任意一个或者多个字段。也就是说,在本申请实施例中,待加密的目标数据可以为任意一个或者多个字段所对应的数据,无需受特定字段的限制。

s103:将加密后的目标数据写入到数据库表文件中。

关于步骤s103,需要说明的是,将加密后的目标数据写入到数据库表文件中时,可以先将所述加密后的目标数据存储到数据库的缓存中,然后在将加密后的目标数据从缓存中写入到数据库表文件中。

由此可见,利用本申请实施例提供的数据存储方法,在创建数据库表的语句中增加了一个标志是否需要对数据进行加密的加密关键字,若需要对特定字段对应的数据进行加密,则在创建该数据库表时,可以在数据库表创建语句中为该字段添加加密关键字。这样一来,将数据写入数据库表文件中时,就可以根据加密关键字确定需要加密的目标数据,从而将加密后的目标数据写入到数据库表文件中,这样一来,即使数据库表文件被攻击,由于数据库表文件中存储的是加密后的目标数据,故而降低了目标数据被泄露的风险。

可以理解的是,在实际应用中,用户可以通过数据查询语句查询数据库表文件中存储的数据。由于数据库表文件中的数据在存储时,可能存在部分或者全部数据是被加密的数据,而由于加密后的数据用户无法确定其表达的含义,因此,在用户查询数据库表文件中存储的数据时,数据库服务器可以显示未加密的数据。

可以理解的是,数据库服务器显示未加密的数据,首先,数据库服务器需要确定哪些数据是加密后存储到数据库表文件中的数据,哪些数据是未加密直接存储到数据库表文件中的数据。

鉴于此,在本申请实施例的一种可能的实现方式中,还可以将所述加密关键字和所述加密关键字对应的字段的标识写入到数据库的加密信息存储文件中,以便在查询数据库表文件中存储的数据时,利用该加密信息存储文件确定哪些数据是加密后存储到数据库表文件中的数据。

可以理解的是,不同数据库表文件中可能存在相同的字段,例如“学生表”和“成绩表”中可能都存在“学号”这个字段。因此,在本申请实施例中,存储所述加密关键字和所述加密关键字对应的字段的标识时,可以将加密关键字和所述加密关键字对应的字段的标识,存储在对应的数据库表文件对应的加密信息存储区域中。即,将“学生表”中加密关键字和所述加密关键字对应的字段的标识存储在“学生表”对应的加密信息存储区域中,将“成绩表”中加密关键字和所述加密关键字对应的字段的标识存储在“成绩表”对应的加密信息存储区域中

需要说明的是,本申请实施例不具体限定所述加密信息存储文件,所述加密信息存储文件可以是仅仅用于存储加密关键字以及加密关键字对应的字段的标识的文件。所述加密关键字也可以是数据库中的数据字典。

以下结合图2介绍从数据库表文件中查询数据的方法。

参见图2,该图为本申请实施例提供的一种数据查询方法的流程示意图。

本申请实施例提供的数据查询方法,例如可以通过如下步骤s201-s204实现。

s201:获取数据查询语句;所述查询语句中携带有存储待查询数据的数据库表文件的标识和所述待查询数据包括的字段的标识。

需要说明的是,本申请实施例不具体限定所述数据查询语句,作为一种示例,所述数据查询语句可以为sql语句中的“select”语句。

需要说明的是,本申请实施例中提及的存储待查询数据的数据库表文件的标识,用于唯一标识存储所述待查询数据的数据库表文件。本申请实施例不具体限定所述存储待查询数据的数据库表文件的标识。

需要说明的是,本申请实施例中提及的待查询数据,可以包括若干个记录,该若干个记录中的任意一个记录均可以包含若干个字段。所述待查询数据包括的字段的标识,即该若干个记录所包括的字段的标识。

需要说明的是,本申请实施例也不具体限定所述待查询数据包括的字段的标识。

s202:利用所述存储待查询数据的数据库表文件的标识、所述待查询数据包括的字段的标识,以及所述加密信息存储文件,确定所述待查询数据包括的字段是否对应有加密关键字。

获取所述数据查询语句之后,即可对所述数据查询语句进行解析,从而获得所述存储待查询数据的数据库表文件的标识和所述待查询数据包括的字段的标识。

如前文所述,不同数据库表文件中可能存在相同的字段,例如“学生表”和“成绩表”中可能都存在“学号”这个字段。因此,存储所述加密关键字和所述加密关键字对应的字段的标识时,可以将加密关键字和所述加密关键字对应的字段的标识存储在对应的数据库表文件对应的加密信息存储区域中。

因此,获得所述存储待查询数据的数据库表文件的标识和所述待查询数据包括的字段的标识之后,即可根据所述存储待查询数据的数据库表文件的标识确定该数据库表文件对应的加密信息存储区域,从而根据待查询数据包括的字段的标识,从该加密信息存储区域中确定待查询数据包括的字段是否所对应有加密关键字。

s203:将对应有加密关键字的字段对应的数据从所述数据库表文件中提取出来,并对所述对应有加密关键字的字段对应的数据进行解密。

s204:显示对所述对应有加密关键字的字段对应的数据进行解密后的数据。

关于步骤s203和步骤s204,需要说明的是,在本申请实施例中,所述待查询数据包括的字段对应有加密关键字,表明对应有加密关键字的字段对应的数据是加密之后存储到数据库表文件中的。

可以理解的是,在本申请实施例中,确定对应有加密关键字的字段之后,可以将对应有加密关键字的字段对应的数据从所述数据库表文件中提取出来,并对所述对应有加密关键字的字段对应的数据利用解密密钥进行解密。并显示对所述对应有加密关键字的字段对应的数据进行解密后的数据。

相应的,确定没有对应加密关键字的字段之后,可以直接将没有对应加密关键字的字段对应的数据从所述数据库表文件中提取出来,并显示所述没有对应加密关键字的字段对应的数据。

这样一来,无论是加密之后存储在数据库表文件中的数据,还是未加密直接存储到数据库表文件中的数据,在用户查询数据时,数据库服务器均以未加密的数据的形式显示给用户。

示例性设备

参见图3,该图为本申请实施例提供的一种数据存储装置的结构示意图。

本申请实施例提供的数据存储装置300,例如可以具体包括:第一获取单元310、加密单元320和第一写入单元330。

第一获取单元310,用于获取数据库表创建语句;所述数据库表创建语句中携带有加密关键字;

加密单元320,用于对所述数据库表创建语句中的目标数据进行加密;所述目标数据为所述加密关键字对应的字段对应的数据;

第一写入单元330,用于将加密后的目标数据写入到数据库表文件中。

可选的,所述加密关键字对应的字段包括:所述数据库表创建语句中携带的任意一个或者多个字段。

可选的,所述装置300还包括:

第二写入单元,用于将所述加密关键字和所述加密关键字对应的字段的标识写入到数据库的加密信息存储文件中。

可选的,所述装置300还包括:

第二获取单元,用于获取数据查询语句;所述查询语句中携带有存储待查询数据的数据库表文件的标识和所述待查询数据包括的字段的标识;

确定单元,用于利用所述存储待查询数据的数据库表文件的标识、所述待查询数据包括的字段的标识,以及所述加密信息存储文件,确定所述待查询数据包括的字段是否对应有加密关键字;

提取单元,用于将对应有加密关键字的字段对应的数据从所述数据库表文件中提取出来,并对所述对应有加密关键字的字段对应的数据进行解密;

显示单元,用于显示对所述对应有加密关键字的字段对应的数据进行解密后的数据。

可选的,所述加密信息存储文件包括:

数据字典。

由于所述数据存储装置是与以上数据存储方法对应的装置,因此,关于所述数据存储装置的各个单元的具体实现,可以参考以上方法实施例的描述,此处不再赘述。

由此可见,利用本申请实施例提供的数据存储装置,在创建数据库表的语句中增加了一个标志是否需要对数据进行加密的加密关键字,若需要对特定字段对应的数据进行加密,则在创建该数据库表时,可以在数据库表创建语句中为该字段添加加密关键字。这样一来,将数据写入数据库表文件中时,就可以根据加密关键字确定需要加密的目标数据,从而将加密后的目标数据写入到数据库表文件中,这样一来,即使数据库表文件被攻击,由于数据库表文件中存储的是加密后的目标数据,故而降低了目标数据被泄露的风险。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制

以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1