本发明属于数据库技术领域,尤其是涉及一种数据库数据加密、解密方法及装置。
背景技术:
在大数据环境下,安全是一个容易被忽略的特性。在所有的大数据解决方案中,加密也是一个很少被提到的词。但在很多实际场景中,都有对数据加密的需求,而且越来越多的场景是需要加密的只是部分数据,及加密与非加密数据同时存储在同一张表中,这就对列级加密提出了需求。
在常见的数据库中,加密都是通过使用加密函数来实现,即通过将原始数据调用加密函数生成加密数据,再将加密后的数据插入到数据库中,这种实现方式加密是在数据库内核之外实现的,而且需要用户通过显式地调用加密函数来实现,不方便使用。另外,由于是通过调用函数的方式,无法使用数据库提供的数据加载工具进行数据批量加载,性能低下。
技术实现要素:
本发明实施例提供了一种数据库数据加密、解密方法及装置,以解决现有技术中数据加密方式无法实现批量加载的技术问题。
第一方面,本发明实施例提供了一种数据库数据加密方法,包括:
在建立表时,检查所述表的属性是否包括加密关键字;
在所述表的属性中包括加密关键字时,将数据以数据块进行加密;
将加密后的数据写入存储文件。
进一步的,所述将数据以数据块进行加密,包括:
将数据以数据块进行缓存;
将数据块进行压缩;
对压缩后的数据块进行加密。
第二方面,本发明实施例还提供了一种数据库数据解密方法,包括:
接收存储文件;
按照预设的解密算法对数据块进行解密,获取解密后的数据;
将解密后的数据提供给数据库上层。
进一步的,所述按照预设的解密算法解密所述数据块,包括:
调用预设的解密算法解密所述数据块;
对解密后的数据块进行解压缩。
第三方面,本发明实施例还提供了一种数据库数据加密装置,包括:
检查单元,用于在建立表时,检查所述表的属性是否包括加密关键字;
加密单元,用于在所述表的属性中包括加密关键字时,将数据以数据块进行加密;
写入单元,用于将加密后的数据写入存储文件。
进一步的,所述加密单元具体用于:
将数据以数据块进行缓存;
将数据块进行压缩;
对压缩后的数据块进行加密。
第四方面,本发明实施例还提供了一种数据库数据解密装置,包括:
接收单元,用于接收存储文件;
解密单元,用于按照预设的解密算法对所述数据块进行解密,获取解密后的数据;
提供单元,用于将解密后的数据提供给数据库上层。
进一步的,所述解密单元用于:
调用预设的解密算法解密所述数据块;
对解密后的数据块进行解压缩。
本发明实施例提供的数据库数据加密、解密方法及装置,通过在数据进入数据库后,在数据库将数据实际写入存储文件之前,将数据以数据块为单位调用加密函数进行加密,然后再将加密后的数据写入存储文件中。由于加密是在数据库内核实现的,无需显示调用加密函数,也可使用数据库提供的加载工具进行批量加载,提高了数据库的性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的数据库数据加密方法的流程示意图;
图2是本发明实施例二提供的数据库数据解密方法的流程示意图;
图3是本发明实施例三提供的数据库数据加密装置的结构示意图;
图4是本发明实施例四提供的数据库数据解密装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1是本发明实施例一提供的数据库数据加密方法的流程示意图,本实施例可适用于在数据库中数据显性加密的情况,该方法可以由数据库数据加密装置来执行,该装置可由软件/硬件方式实现,并可集成于数据库系统中。
参见图1,所述数据库数据加密方法,包括:
S110,在建立表时,检查所述表的属性是否包括加密关键字。
在前端,修改创建表的语法,以支持指定加密关键字。示例性的,所述加密关键字为ENCRYPT。ENCRYPT关键字可以出现在表属性中,也可以出现在列属性中,分别对应表级及列级加密。将ENCRYPT属性保存至元数据中。
S120,在所述表的属性中包括加密关键字时,将数据以数据块进行加密。
相应的,在属性中包括加密关键字ENCRYPT时,在数据库将数据实际写入存储文件之前,将数据以数据块为单位调用加密函数进行加密,采用加密算法能够对数据进行有效的加密,示例性的,加密前的数据如下:
0000000:5900 0000 0202 0000 0009 0000 000d 3928 Y.............9(
0000010:a801 0000 000b 0000 0009 0000 0003 0000................
0000020:0003 0000 000b 0000 0009 0000 0003 0000................
0000030:0003 0000 0000 0000 0015 0000 0003 0000................
0000040:0000 0300 0000 0300 0000 0300 0000 0000................
0000050:6162 6365 6673 7364 66abcefssdf
相应的,将上述数据进行加密后,
0000000:5900 0000 0a02 0000 0009 0000 00f9 7dc2 Y.............}.
0000010:4201 0000 000b 0000 0009 0000 0003 0000 B...............
0000020:0003 0000 000b 0000 0009 0000 0003 0000................
0000030:0003 0000 0000 0000 0015 0000 0003 0000................
0000040:0000 0300 0000 0300 0000 0300 0000c085................
0000050:de82 3414 3cdf 99b6 0777e58d 17b4..4.<....w....
由上述可以看出,可以实现对数据的有效加密。
S130,将加密后的数据写入存储文件。
将加密后的数据写入存储文件中。
本发明实施例通过在数据进入数据库后,在数据库将数据实际写入存储文件之前,将数据以数据块为单位调用加密函数进行加密,然后再将加密后的数据写入存储文件中。由于加密是在数据库内核实现的,无需显示调用加密函数,也可使用数据库提供的加载工具进行批量加载,提高了数据库的性能。
在本实施例的一个优选实施方式中,将数据以数据块进行加密具体优化为:将数据以数据块进行缓存;将数据块进行压缩;对压缩后的数据块进行加密。通过在加密以前进行压缩,可以有效提升加密性能。
实施例二
图2是本发明实施例一提供的数据库数据解密方法的流程示意图,本实施例可适用于在数据库中加载加密数据的情况,该方法可以由数据库数据解密装置来执行,该装置可由软件/硬件方式实现,并可集成于数据库系统中。
参见图2,所述数据库数据解密方法,包括:
S210,接收存储文件。
由于加密数据是在用户前端进行加密后生成的存储文件,因此在将数据写入数据库前,需要先接收相应的存储文件。
S220,按照预设的解密算法对数据块进行解密,获取解密后的数据。
采用与加密算法对应的解密算法对存储文件按中的数据块进行解密,获取解密后的数据。
S230,将解密后的数据提供给数据库上层。
将解密后的数据提供给上层使用,供上层进行加载或者其它应用。
本实施例通以数据块为单位调用解密函数进行解密,然后再将解密后的数据写提供给数据库上层。可使用数据库提供的加载工具进行批量加载,提高了数据库的性能。
在本实施例的一个优选实施方式中,将所述按照预设的解密算法解密所述数据块,具体优化为:调用预设的解密算法解密所述数据块;对解密后的数据块进行解压缩。由于数据可能先被加密后被压缩,为还原数据块中的数据,需要调用预设的解密算法解密所述数据块;对解密后的数据块进行解压缩,以获取到数据块中的原始数据。
实施例三
图3是本发明实施例三提供的数据库数据加密装置的结构示意图,如图3所示,所述装置包括:
检查单元310,用于在建立表时,检查所述表的属性是否包括加密关键字;
加密单元320,用于在所述表的属性中包括加密关键字时,将数据以数据块进行加密;
写入单元330,用于将加密后的数据写入存储文件。
进一步的,所述加密单元具体用于:
将数据以数据块进行缓存;
将数据块进行压缩;
对压缩后的数据块进行加密。
本发明实施例提供的数据库数据加密装置,通过在数据进入数据库后,在数据库将数据实际写入存储文件之前,根据所建立表的属性,将数据以数据块进行加密,并加加密后的数据写入存储文件。由于加密是在数据库内核实现的,无需显示调用加密函数,也可使用数据库提供的加载工具进行批量加载,提高了数据库的性能。
实施例四
图4是本发明实施例四提供的数据库数据解密装置的结构示意图,如图4所示,所述装置包括:
接收单元410,用于接收存储文件;
解密单元420,用于按照预设的解密算法对所述数据块进行解密,获取解密后的数据;
提供单元430,用于将解密后的数据提供给数据库上层。
进一步的,所述解密单元用于:
调用预设的解密算法解密所述数据块;
对解密后的数据块进行解压缩。
本发明实施例提供的数据库数据解密装置,用于接收存储文件,按照预设的解密算法对数据进行解密,并获取解密后的数据,提供给数据库上层,提高了数据库的性能。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。