本發(fā)明屬于數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,尤其是涉及一種數(shù)據(jù)庫(kù)數(shù)據(jù)加密、解密方法及裝置。
背景技術(shù):
在大數(shù)據(jù)環(huán)境下,安全是一個(gè)容易被忽略的特性。在所有的大數(shù)據(jù)解決方案中,加密也是一個(gè)很少被提到的詞。但在很多實(shí)際場(chǎng)景中,都有對(duì)數(shù)據(jù)加密的需求,而且越來(lái)越多的場(chǎng)景是需要加密的只是部分?jǐn)?shù)據(jù),及加密與非加密數(shù)據(jù)同時(shí)存儲(chǔ)在同一張表中,這就對(duì)列級(jí)加密提出了需求。
在常見(jiàn)的數(shù)據(jù)庫(kù)中,加密都是通過(guò)使用加密函數(shù)來(lái)實(shí)現(xiàn),即通過(guò)將原始數(shù)據(jù)調(diào)用加密函數(shù)生成加密數(shù)據(jù),再將加密后的數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中,這種實(shí)現(xiàn)方式加密是在數(shù)據(jù)庫(kù)內(nèi)核之外實(shí)現(xiàn)的,而且需要用戶(hù)通過(guò)顯式地調(diào)用加密函數(shù)來(lái)實(shí)現(xiàn),不方便使用。另外,由于是通過(guò)調(diào)用函數(shù)的方式,無(wú)法使用數(shù)據(jù)庫(kù)提供的數(shù)據(jù)加載工具進(jìn)行數(shù)據(jù)批量加載,性能低下。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種數(shù)據(jù)庫(kù)數(shù)據(jù)加密、解密方法及裝置,以解決現(xiàn)有技術(shù)中數(shù)據(jù)加密方式無(wú)法實(shí)現(xiàn)批量加載的技術(shù)問(wèn)題。
第一方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)庫(kù)數(shù)據(jù)加密方法,包括:
在建立表時(shí),檢查所述表的屬性是否包括加密關(guān)鍵字;
在所述表的屬性中包括加密關(guān)鍵字時(shí),將數(shù)據(jù)以數(shù)據(jù)塊進(jìn)行加密;
將加密后的數(shù)據(jù)寫(xiě)入存儲(chǔ)文件。
進(jìn)一步的,所述將數(shù)據(jù)以數(shù)據(jù)塊進(jìn)行加密,包括:
將數(shù)據(jù)以數(shù)據(jù)塊進(jìn)行緩存;
將數(shù)據(jù)塊進(jìn)行壓縮;
對(duì)壓縮后的數(shù)據(jù)塊進(jìn)行加密。
第二方面,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)庫(kù)數(shù)據(jù)解密方法,包括:
接收存儲(chǔ)文件;
按照預(yù)設(shè)的解密算法對(duì)數(shù)據(jù)塊進(jìn)行解密,獲取解密后的數(shù)據(jù);
將解密后的數(shù)據(jù)提供給數(shù)據(jù)庫(kù)上層。
進(jìn)一步的,所述按照預(yù)設(shè)的解密算法解密所述數(shù)據(jù)塊,包括:
調(diào)用預(yù)設(shè)的解密算法解密所述數(shù)據(jù)塊;
對(duì)解密后的數(shù)據(jù)塊進(jìn)行解壓縮。
第三方面,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)庫(kù)數(shù)據(jù)加密裝置,包括:
檢查單元,用于在建立表時(shí),檢查所述表的屬性是否包括加密關(guān)鍵字;
加密單元,用于在所述表的屬性中包括加密關(guān)鍵字時(shí),將數(shù)據(jù)以數(shù)據(jù)塊進(jìn)行加密;
寫(xiě)入單元,用于將加密后的數(shù)據(jù)寫(xiě)入存儲(chǔ)文件。
進(jìn)一步的,所述加密單元具體用于:
將數(shù)據(jù)以數(shù)據(jù)塊進(jìn)行緩存;
將數(shù)據(jù)塊進(jìn)行壓縮;
對(duì)壓縮后的數(shù)據(jù)塊進(jìn)行加密。
第四方面,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)庫(kù)數(shù)據(jù)解密裝置,包括:
接收單元,用于接收存儲(chǔ)文件;
解密單元,用于按照預(yù)設(shè)的解密算法對(duì)所述數(shù)據(jù)塊進(jìn)行解密,獲取解密后的數(shù)據(jù);
提供單元,用于將解密后的數(shù)據(jù)提供給數(shù)據(jù)庫(kù)上層。
進(jìn)一步的,所述解密單元用于:
調(diào)用預(yù)設(shè)的解密算法解密所述數(shù)據(jù)塊;
對(duì)解密后的數(shù)據(jù)塊進(jìn)行解壓縮。
本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)數(shù)據(jù)加密、解密方法及裝置,通過(guò)在數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)后,在數(shù)據(jù)庫(kù)將數(shù)據(jù)實(shí)際寫(xiě)入存儲(chǔ)文件之前,將數(shù)據(jù)以數(shù)據(jù)塊為單位調(diào)用加密函數(shù)進(jìn)行加密,然后再將加密后的數(shù)據(jù)寫(xiě)入存儲(chǔ)文件中。由于加密是在數(shù)據(jù)庫(kù)內(nèi)核實(shí)現(xiàn)的,無(wú)需顯示調(diào)用加密函數(shù),也可使用數(shù)據(jù)庫(kù)提供的加載工具進(jìn)行批量加載,提高了數(shù)據(jù)庫(kù)的性能。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例一提供的數(shù)據(jù)庫(kù)數(shù)據(jù)加密方法的流程示意圖;
圖2是本發(fā)明實(shí)施例二提供的數(shù)據(jù)庫(kù)數(shù)據(jù)解密方法的流程示意圖;
圖3是本發(fā)明實(shí)施例三提供的數(shù)據(jù)庫(kù)數(shù)據(jù)加密裝置的結(jié)構(gòu)示意圖;
圖4是本發(fā)明實(shí)施例四提供的數(shù)據(jù)庫(kù)數(shù)據(jù)解密裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
實(shí)施例一
圖1是本發(fā)明實(shí)施例一提供的數(shù)據(jù)庫(kù)數(shù)據(jù)加密方法的流程示意圖,本實(shí)施例可適用于在數(shù)據(jù)庫(kù)中數(shù)據(jù)顯性加密的情況,該方法可以由數(shù)據(jù)庫(kù)數(shù)據(jù)加密裝置來(lái)執(zhí)行,該裝置可由軟件/硬件方式實(shí)現(xiàn),并可集成于數(shù)據(jù)庫(kù)系統(tǒng)中。
參見(jiàn)圖1,所述數(shù)據(jù)庫(kù)數(shù)據(jù)加密方法,包括:
S110,在建立表時(shí),檢查所述表的屬性是否包括加密關(guān)鍵字。
在前端,修改創(chuàng)建表的語(yǔ)法,以支持指定加密關(guān)鍵字。示例性的,所述加密關(guān)鍵字為ENCRYPT。ENCRYPT關(guān)鍵字可以出現(xiàn)在表屬性中,也可以出現(xiàn)在列屬性中,分別對(duì)應(yīng)表級(jí)及列級(jí)加密。將ENCRYPT屬性保存至元數(shù)據(jù)中。
S120,在所述表的屬性中包括加密關(guān)鍵字時(shí),將數(shù)據(jù)以數(shù)據(jù)塊進(jìn)行加密。
相應(yīng)的,在屬性中包括加密關(guān)鍵字ENCRYPT時(shí),在數(shù)據(jù)庫(kù)將數(shù)據(jù)實(shí)際寫(xiě)入存儲(chǔ)文件之前,將數(shù)據(jù)以數(shù)據(jù)塊為單位調(diào)用加密函數(shù)進(jìn)行加密,采用加密算法能夠?qū)?shù)據(jù)進(jìn)行有效的加密,示例性的,加密前的數(shù)據(jù)如下:
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
相應(yīng)的,將上述數(shù)據(jù)進(jìn)行加密后,
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....
由上述可以看出,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)的有效加密。
S130,將加密后的數(shù)據(jù)寫(xiě)入存儲(chǔ)文件。
將加密后的數(shù)據(jù)寫(xiě)入存儲(chǔ)文件中。
本發(fā)明實(shí)施例通過(guò)在數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)后,在數(shù)據(jù)庫(kù)將數(shù)據(jù)實(shí)際寫(xiě)入存儲(chǔ)文件之前,將數(shù)據(jù)以數(shù)據(jù)塊為單位調(diào)用加密函數(shù)進(jìn)行加密,然后再將加密后的數(shù)據(jù)寫(xiě)入存儲(chǔ)文件中。由于加密是在數(shù)據(jù)庫(kù)內(nèi)核實(shí)現(xiàn)的,無(wú)需顯示調(diào)用加密函數(shù),也可使用數(shù)據(jù)庫(kù)提供的加載工具進(jìn)行批量加載,提高了數(shù)據(jù)庫(kù)的性能。
在本實(shí)施例的一個(gè)優(yōu)選實(shí)施方式中,將數(shù)據(jù)以數(shù)據(jù)塊進(jìn)行加密具體優(yōu)化為:將數(shù)據(jù)以數(shù)據(jù)塊進(jìn)行緩存;將數(shù)據(jù)塊進(jìn)行壓縮;對(duì)壓縮后的數(shù)據(jù)塊進(jìn)行加密。通過(guò)在加密以前進(jìn)行壓縮,可以有效提升加密性能。
實(shí)施例二
圖2是本發(fā)明實(shí)施例一提供的數(shù)據(jù)庫(kù)數(shù)據(jù)解密方法的流程示意圖,本實(shí)施例可適用于在數(shù)據(jù)庫(kù)中加載加密數(shù)據(jù)的情況,該方法可以由數(shù)據(jù)庫(kù)數(shù)據(jù)解密裝置來(lái)執(zhí)行,該裝置可由軟件/硬件方式實(shí)現(xiàn),并可集成于數(shù)據(jù)庫(kù)系統(tǒng)中。
參見(jiàn)圖2,所述數(shù)據(jù)庫(kù)數(shù)據(jù)解密方法,包括:
S210,接收存儲(chǔ)文件。
由于加密數(shù)據(jù)是在用戶(hù)前端進(jìn)行加密后生成的存儲(chǔ)文件,因此在將數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)前,需要先接收相應(yīng)的存儲(chǔ)文件。
S220,按照預(yù)設(shè)的解密算法對(duì)數(shù)據(jù)塊進(jìn)行解密,獲取解密后的數(shù)據(jù)。
采用與加密算法對(duì)應(yīng)的解密算法對(duì)存儲(chǔ)文件按中的數(shù)據(jù)塊進(jìn)行解密,獲取解密后的數(shù)據(jù)。
S230,將解密后的數(shù)據(jù)提供給數(shù)據(jù)庫(kù)上層。
將解密后的數(shù)據(jù)提供給上層使用,供上層進(jìn)行加載或者其它應(yīng)用。
本實(shí)施例通以數(shù)據(jù)塊為單位調(diào)用解密函數(shù)進(jìn)行解密,然后再將解密后的數(shù)據(jù)寫(xiě)提供給數(shù)據(jù)庫(kù)上層??墒褂脭?shù)據(jù)庫(kù)提供的加載工具進(jìn)行批量加載,提高了數(shù)據(jù)庫(kù)的性能。
在本實(shí)施例的一個(gè)優(yōu)選實(shí)施方式中,將所述按照預(yù)設(shè)的解密算法解密所述數(shù)據(jù)塊,具體優(yōu)化為:調(diào)用預(yù)設(shè)的解密算法解密所述數(shù)據(jù)塊;對(duì)解密后的數(shù)據(jù)塊進(jìn)行解壓縮。由于數(shù)據(jù)可能先被加密后被壓縮,為還原數(shù)據(jù)塊中的數(shù)據(jù),需要調(diào)用預(yù)設(shè)的解密算法解密所述數(shù)據(jù)塊;對(duì)解密后的數(shù)據(jù)塊進(jìn)行解壓縮,以獲取到數(shù)據(jù)塊中的原始數(shù)據(jù)。
實(shí)施例三
圖3是本發(fā)明實(shí)施例三提供的數(shù)據(jù)庫(kù)數(shù)據(jù)加密裝置的結(jié)構(gòu)示意圖,如圖3所示,所述裝置包括:
檢查單元310,用于在建立表時(shí),檢查所述表的屬性是否包括加密關(guān)鍵字;
加密單元320,用于在所述表的屬性中包括加密關(guān)鍵字時(shí),將數(shù)據(jù)以數(shù)據(jù)塊進(jìn)行加密;
寫(xiě)入單元330,用于將加密后的數(shù)據(jù)寫(xiě)入存儲(chǔ)文件。
進(jìn)一步的,所述加密單元具體用于:
將數(shù)據(jù)以數(shù)據(jù)塊進(jìn)行緩存;
將數(shù)據(jù)塊進(jìn)行壓縮;
對(duì)壓縮后的數(shù)據(jù)塊進(jìn)行加密。
本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)數(shù)據(jù)加密裝置,通過(guò)在數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)后,在數(shù)據(jù)庫(kù)將數(shù)據(jù)實(shí)際寫(xiě)入存儲(chǔ)文件之前,根據(jù)所建立表的屬性,將數(shù)據(jù)以數(shù)據(jù)塊進(jìn)行加密,并加加密后的數(shù)據(jù)寫(xiě)入存儲(chǔ)文件。由于加密是在數(shù)據(jù)庫(kù)內(nèi)核實(shí)現(xiàn)的,無(wú)需顯示調(diào)用加密函數(shù),也可使用數(shù)據(jù)庫(kù)提供的加載工具進(jìn)行批量加載,提高了數(shù)據(jù)庫(kù)的性能。
實(shí)施例四
圖4是本發(fā)明實(shí)施例四提供的數(shù)據(jù)庫(kù)數(shù)據(jù)解密裝置的結(jié)構(gòu)示意圖,如圖4所示,所述裝置包括:
接收單元410,用于接收存儲(chǔ)文件;
解密單元420,用于按照預(yù)設(shè)的解密算法對(duì)所述數(shù)據(jù)塊進(jìn)行解密,獲取解密后的數(shù)據(jù);
提供單元430,用于將解密后的數(shù)據(jù)提供給數(shù)據(jù)庫(kù)上層。
進(jìn)一步的,所述解密單元用于:
調(diào)用預(yù)設(shè)的解密算法解密所述數(shù)據(jù)塊;
對(duì)解密后的數(shù)據(jù)塊進(jìn)行解壓縮。
本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)數(shù)據(jù)解密裝置,用于接收存儲(chǔ)文件,按照預(yù)設(shè)的解密算法對(duì)數(shù)據(jù)進(jìn)行解密,并獲取解密后的數(shù)據(jù),提供給數(shù)據(jù)庫(kù)上層,提高了數(shù)據(jù)庫(kù)的性能。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:ROM、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。