對象加密存儲方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種對象加密存儲方法、裝置及系統(tǒng)。其中,該方法包括:獲取存儲請求,其中,存儲請求攜帶數(shù)據(jù)對象;獲取與存儲請求對應(yīng)的加密屬性;對數(shù)據(jù)對象中對應(yīng)加密屬性的屬性數(shù)據(jù)進行加密得到加密對象;將加密對象保存入數(shù)據(jù)庫。采用本發(fā)明,解決了現(xiàn)有技術(shù)中數(shù)據(jù)存取系統(tǒng)架構(gòu)中加密對象數(shù)據(jù)的過程復(fù)雜、開發(fā)效率低下的問題,實現(xiàn)了數(shù)據(jù)存取系統(tǒng)架構(gòu)中自動加密,極大的降低了手動加密解密開發(fā)成本,并且簡化了對象數(shù)據(jù)加密的過程,提高了處理速度和開發(fā)效率,降低了開發(fā)成本。
【專利說明】對象加密存儲方法、裝置及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種對象加密存儲方法、裝置及系統(tǒng)?!颈尘凹夹g(shù)】
[0002]對象-關(guān)系映射(即Object/Relation Mapping,簡稱數(shù)據(jù)存取系統(tǒng))提供了概念性的、易于理解的模型化數(shù)據(jù)的方法。建模者通過收集來自那些熟悉應(yīng)用程序但不熟練的數(shù)據(jù)建模者的人的信息開發(fā)信息模型;建模者必須能夠用非技術(shù)企業(yè)專家可以理解的術(shù)語在概念層次上與數(shù)據(jù)結(jié)構(gòu)進行通訊;建模者也必須能以簡單的單元分析信息,對樣本數(shù)據(jù)進行處理。對象和關(guān)系數(shù)據(jù)是業(yè)務(wù)實體的兩種表現(xiàn)形式,業(yè)務(wù)實體在內(nèi)存中表現(xiàn)為對象,在數(shù)據(jù)庫中表現(xiàn)為關(guān)系數(shù)據(jù)。內(nèi)存中的對象之間存在關(guān)聯(lián)和繼承關(guān)系,而在數(shù)據(jù)庫中,關(guān)系數(shù)據(jù)無法直接表達(dá)多對多關(guān)聯(lián)和繼承關(guān)系。因此,對象-關(guān)系映射(數(shù)據(jù)存取系統(tǒng))系統(tǒng)一般以中間件的形式存在,主要實現(xiàn)程序?qū)ο蟮疥P(guān)系數(shù)據(jù)庫數(shù)據(jù)的映射。對象關(guān)系映射成功運用在不同的面向?qū)ο蟪志脤赢a(chǎn)品中,如:Torque, OJB, Hibernate, TopLink, Castor JDO,TJDO 等。
[0003]結(jié)構(gòu)化查詢語言(Structured Query Language)簡稱SQL,結(jié)構(gòu)化查詢語言是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng);同時也是數(shù)據(jù)庫腳本文件的擴展名。結(jié)構(gòu)化查詢語言是高級的非過程化編程語言,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作。它不要求用戶指定對數(shù)據(jù)的存放方法,也不需要用戶了解具體的數(shù)據(jù)存放方式,所以具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫系統(tǒng)可以使用相同的結(jié)構(gòu)化查詢語言語言作為數(shù)據(jù)輸入與管理的接口。結(jié)構(gòu)化查詢語言語句可以嵌套,這使他具有極大的靈活性和強大的功能。
[0004]加密是以某種特殊的算法改變原有的信息數(shù)據(jù),使得未授權(quán)的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無法了解信息的內(nèi)容。出于信息保密的目的,在信息傳輸或存儲中,采用密碼技術(shù)對需要保密的信息進行處理,使得處理后的信息不能被非受權(quán)者(含非法者)讀懂或解讀,這一過程稱為加密。在加密處理過程中,需要保密的信息稱為“明文”,經(jīng)加密處理后的信息稱為“密文”。加密即是將“明文”變?yōu)椤懊芪摹钡倪^程;與此類似,將“密文”變?yōu)椤懊魑摹钡倪^程被稱為解密。
[0005]在使用面向?qū)ο筌浖_發(fā)的情況下,數(shù)據(jù)存取系統(tǒng)架構(gòu)封裝了 SQL生成過程,使得開發(fā)者能夠快速開發(fā)應(yīng)用。面對一些敏感數(shù)據(jù)(例如:密碼)等需要加密的數(shù)據(jù)時,傳統(tǒng)的數(shù)據(jù)加密存儲一般為數(shù)據(jù)庫提供的加密/解密方案,通過SQL的方式在存儲時調(diào)用加密函數(shù)加密,在提取數(shù)據(jù)時調(diào)用解密函數(shù)解密;另外一種是用戶手動加密存儲,提取數(shù)據(jù)后手動解密。
[0006]由于數(shù)據(jù)存取系統(tǒng)框架封裝了 SQL的生成過程,所以開發(fā)者無法通過修改SQL語句達(dá)到加密的目的;手動進行屬性級別的加密/解密,需要針對所有需要加密屬性進行處理,增加了開發(fā)的復(fù)雜性。盡管有數(shù)據(jù)庫字段級別的加密/解密的方案,但都是與數(shù)據(jù)存取系統(tǒng)相對獨立的,數(shù)據(jù)庫加密/解密裝置無法從數(shù)據(jù)存取系統(tǒng)中獲取信息。對于傳統(tǒng)的對象加密存儲,流程如圖1所示,在該流程中數(shù)據(jù)存取系統(tǒng)框架加密存儲需要手動加密得到加密后的數(shù)據(jù)對象然后進入系統(tǒng)數(shù)據(jù)存儲模塊,使用數(shù)據(jù)存儲系統(tǒng)使用系統(tǒng)數(shù)據(jù)對象存儲方法獲取該加密后的數(shù)據(jù)對象之后傳送至數(shù)據(jù)讀取系統(tǒng),數(shù)據(jù)讀取系統(tǒng)通過系統(tǒng)數(shù)據(jù)對象讀取方法和手動解密得到解密后的數(shù)據(jù)對象。
[0007]針對現(xiàn)有技術(shù)中數(shù)據(jù)存取系統(tǒng)架構(gòu)中加密對象數(shù)據(jù)的過程復(fù)雜、效率低下的問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0008]針對相關(guān)技術(shù)中數(shù)據(jù)存取系統(tǒng)架構(gòu)中加密對象數(shù)據(jù)的過程復(fù)雜、效率低下的問題,目前尚未提出有效的解決方案,為此,本發(fā)明的主要目的在于提供一種對象加密存儲方法、裝置及系統(tǒng),以解決上述問題。
[0009]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種對象加密存儲方法,該方法包括:獲取存儲請求,其中,存儲請求攜帶數(shù)據(jù)對象;獲取與存儲請求對應(yīng)的加密屬性;對數(shù)據(jù)對象中對應(yīng)加密屬性的屬性數(shù)據(jù)進行加密得到加密對象;將加密對象保存入數(shù)據(jù)庫。
[0010]進一步地,對數(shù)據(jù)對象中對應(yīng)加密屬性的屬性數(shù)據(jù)進行加密得到加密對象的步驟包括:從數(shù)據(jù)對象中提取與加密屬性對應(yīng)的屬性數(shù)據(jù);使用預(yù)設(shè)加密密鑰對屬性數(shù)據(jù)進行加密得到加密數(shù)據(jù);使用加密數(shù)據(jù)更新數(shù)據(jù)對象得到加密對象。
[0011]進一步地,在將加密對象保存入數(shù)據(jù)庫之后,對象加密存儲方法還包括:獲取與讀取請求對應(yīng)的讀取對象;檢測讀取對象是否為加密對象;在讀取對象為加密對象的情況下,對加密對象進行解密得到解密對象,讀取解密對象;在讀取對象不為加密對象的情況下,直接讀取讀取對象。
[0012]進一步地,獲取與存儲請求對應(yīng)的加密屬性的步驟包括:從數(shù)據(jù)對象中提取實體信息,其中,實體信息中包括實體屬性;在預(yù)設(shè)屬性數(shù)據(jù)庫中存在與實體屬性一致的加密屬性的情況下,提取加密屬性。
[0013]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了 一種對象加密存儲裝置,該裝置包括:請求獲取模塊,用于獲取存儲請求,其中,存儲請求攜帶數(shù)據(jù)對象;屬性獲取模塊,用于獲取與存儲請求對應(yīng)的加密屬性;加密模塊,用于對數(shù)據(jù)對象中對應(yīng)加密屬性的屬性數(shù)據(jù)進行加密得到加密對象;保存模塊,用于將加密對象保存入數(shù)據(jù)庫。
[0014]進一步地,加密模塊包括:數(shù)據(jù)提取模塊,用于從數(shù)據(jù)對象中提取與加密屬性對應(yīng)的屬性數(shù)據(jù);加密子模塊,用于使用預(yù)設(shè)加密密鑰對屬性數(shù)據(jù)進行加密得到加密數(shù)據(jù);更新模塊,用于使用加密數(shù)據(jù)更新數(shù)據(jù)對象得到加密對象。
[0015]進一步地,對象加密存儲裝置還包括:對象獲取模塊,用于獲取與讀取請求對應(yīng)的讀取對象;檢測模塊,用于檢測讀取對象是否為加密對象;解密讀取模塊,用于在讀取對象為加密對象的情況下,對加密對象進行解密得到解密對象,讀取解密對象;對象讀取模塊,用于在讀取對象不為加密對象的情況下,直接讀取讀取對象。
[0016]進一步地,屬性獲取模塊包括:屬性提取模塊,從數(shù)據(jù)對象中提取實體信息,其中,實體信息中包括實體屬性;屬性讀取模塊,用于在預(yù)設(shè)屬性數(shù)據(jù)庫中存在與實體屬性一致的加密屬性的情況下,讀取加密屬性。[0017]為了實現(xiàn)本發(fā)明的上述目的,本發(fā)明還提供了一種對象加密存儲系統(tǒng),該系統(tǒng)包括:加密裝置,設(shè)置在數(shù)據(jù)庫的存儲接口內(nèi),用于獲取存儲請求以及與存儲請求對應(yīng)的加密屬性,在對數(shù)據(jù)對象中對應(yīng)加密屬性的屬性數(shù)據(jù)進行加密得到加密對象之后,將加密對象保存入數(shù)據(jù)庫,其中,存儲請求攜帶數(shù)據(jù)對象。
[0018]進一步地,對象加密存儲系統(tǒng)還包括:解密裝置,設(shè)置在數(shù)據(jù)庫的讀取接口內(nèi),用于獲取與讀取請求對應(yīng)的讀取對象,并在讀取對象為加密對象的情況下,對加密對象進行解密得到解密對象,讀取解密對象;在讀取對象不為加密對象的情況下,直接讀取讀取對象。
[0019]采用本發(fā)明,將加密裝置設(shè)置在數(shù)據(jù)庫的存儲接口內(nèi),在獲取模塊獲取到用戶的存儲請求之后,通過屬性獲取模塊和加密模塊直接對數(shù)據(jù)對象中需要加密的數(shù)據(jù)加密后才通過保存模塊保存加密后的加密對象,從而可以實現(xiàn)數(shù)據(jù)存取系統(tǒng)架構(gòu)中對象屬性級別的自動加密,開發(fā)者無需手動開發(fā)加密/解密的過程,僅需要配置需要加密的屬性即可,從而解決了現(xiàn)有技術(shù)中數(shù)據(jù)存取系統(tǒng)架構(gòu)中加密對象數(shù)據(jù)的過程復(fù)雜、開發(fā)效率低下的問題,實現(xiàn)了數(shù)據(jù)存取系統(tǒng)架構(gòu)中自動加密,極大的降低了手動加密解密開發(fā)成本,并且簡化了對象數(shù)據(jù)加密的過程,提高了處理速度和開發(fā)效率,降低了開發(fā)成本。
【專利附圖】
【附圖說明】
[0020]此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0021]圖1是現(xiàn)有技術(shù)中的數(shù)據(jù)存取系統(tǒng)架構(gòu)加密存儲裝置的結(jié)構(gòu)示意圖;以及
[0022]圖2是根據(jù)本發(fā)明實施例的加密裝置和解密裝置與數(shù)據(jù)存取系統(tǒng)架構(gòu)的關(guān)系框圖;
[0023]圖3是根據(jù)本發(fā)明實施例的對象加密存儲方法的流程圖;以及
[0024]圖4是根據(jù)本發(fā)明實施例的對象加密存儲裝置示意圖。
【具體實施方式】
[0025]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。
[0026]首先對本申請中涉及的術(shù)語進行解釋:
[0027]在本發(fā)明實施例中的Microsoft.NET Framework是用于Windows的新托管代碼編程模型,具體是用于構(gòu)建具有視覺上引人注目的用戶體驗的應(yīng)用程序,實現(xiàn)跨技術(shù)邊界的無縫通信,并且能支持各種業(yè)務(wù)流程。
[0028]AD0.NET Entity Framework是微軟以AD0.NET為基礎(chǔ)所發(fā)展出來的對象關(guān)系對應(yīng)(0/R Mapping)解決方案,早期被稱為0bjectSpace,現(xiàn)已經(jīng)包含在VisualStudio2008Service Packl 以及? NET Framework3.5Service Packl 中發(fā)表。
[0029]反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象,具體地,可以使用反射動態(tài)地創(chuàng)建類型的實例,將類型綁定到現(xiàn)有對象,或從現(xiàn)有對象中獲取類型,然后,通過反射方法調(diào)用類型的方法或訪問其字段和屬性。[0030]面向?qū)ο?Object Oriented, 00)是一種對現(xiàn)實世界理解和抽象的方法,是計算機編程技術(shù)[I]發(fā)展到一定階段后的產(chǎn)物。早期的計算機編程是基于面向過程的方法,例如實現(xiàn)算術(shù)運算1+1+2=4,通過設(shè)計一個算法就可以解決當(dāng)時的問題。隨著計算機技術(shù)的不斷提高,計算機被用于解決越來越復(fù)雜的問題。通過面向?qū)ο蟮姆绞剑瑢F(xiàn)實世界的物抽象成對象,現(xiàn)實世界中的關(guān)系抽象成類、繼承,幫助人們實現(xiàn)對現(xiàn)實世界的抽象與數(shù)字建模。通過面向?qū)ο蟮姆椒ǎ谟萌死斫獾姆绞綄?fù)雜系統(tǒng)進行分析、設(shè)計與編程。同時,面向?qū)ο竽苡行岣呔幊痰男?,通過封裝技術(shù),消息機制可以像搭積木的一樣快速開發(fā)出一個全新的系統(tǒng)。面向?qū)ο笫侵敢环N程序設(shè)計范型,同時也是一種程序開發(fā)的方法。對象指的是類的集合。它將對象作為程序的基本單元,將程序和數(shù)據(jù)封裝其中,以提高軟件的重用性、靈活性和擴展性。
[0031]封裝(Encapsulation):隱藏對象的屬性和實現(xiàn)細(xì)節(jié),僅對外公開接口,控制在程序中屬性的讀取和修改的訪問級別。封裝就是將抽象得到的數(shù)據(jù)和行為(或功能)相結(jié)合,形成一個有機的整體,也就是將數(shù)據(jù)與操作數(shù)據(jù)的源代碼進行有機的結(jié)合,形成“類”,其中數(shù)據(jù)和函數(shù)都是類的成員。封裝的目的是增強安全性和簡化編程,使用者不必了解具體的實現(xiàn)細(xì)節(jié),而只是要通過外部接口,以特定的訪問權(quán)限來使用類的成員。
[0032]繼承(Inherit):繼承是面向?qū)ο笳Z言的重要機制。借助繼承,可以擴展原有的代碼,應(yīng)用到其他程序中,而不必重新編寫這些代碼。繼承是指一個對象直接使用另一對象的屬性和方法。
[0033]C# CC Sharp)是微軟公司發(fā)布的一種面向?qū)ο蟮?、運行于? NET Framework之上的高級程序設(shè)計語言。并定于在微軟職業(yè)開發(fā)者論壇(roc)上登臺亮相。c#是微軟公司研究員Anders Hejlsberg的最新成果。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了 Delphi的一個特點,與COM (組件對象模型)是直接集成的,而且它是微軟公司.NET windows網(wǎng)絡(luò)框架的主角。
[0034]對象(0b ject )就是客觀世界中存在的人、事、物體等實體在計算機邏輯中的映射。
[0035]根據(jù)本發(fā)明實施例的提供了一種對象加密存儲系統(tǒng)。該系統(tǒng)可以包括:加密裝置,設(shè)置在數(shù)據(jù)庫的存儲接口內(nèi),用于獲取存儲請求以及與存儲請求對應(yīng)的加密屬性,在對數(shù)據(jù)對象中對應(yīng)加密屬性的屬性數(shù)據(jù)進行加密得到加密對象之后,將加密對象保存入數(shù)據(jù)庫,其中,存儲請求攜帶數(shù)據(jù)對象。
[0036]采用本發(fā)明的方案,將加密裝置設(shè)置入數(shù)據(jù)庫的存儲接口內(nèi),在接收到用戶的存儲請求之后,直接對數(shù)據(jù)對象中需要加密的數(shù)據(jù)加密后才保存加密后的加密對象,從而可以實現(xiàn)數(shù)據(jù)存取系統(tǒng)架構(gòu)中對象屬性級別的自動加密,開發(fā)者無需手動開發(fā)加密/解密的過程,僅需要配置需要加密的屬性即可,從而解決了現(xiàn)有技術(shù)中數(shù)據(jù)存取系統(tǒng)架構(gòu)中加密對象數(shù)據(jù)的過程復(fù)雜、開發(fā)效率低下的問題,實現(xiàn)了數(shù)據(jù)存取系統(tǒng)架構(gòu)中自動加密,極大的降低了手動加密解密開發(fā)成本,并且簡化了對象數(shù)據(jù)加密的過程,提高了處理速度和開發(fā)效率,降低了開發(fā)成本。
[0037]根據(jù)本發(fā)明的上述實施例,對象加密存儲系統(tǒng)還可以包括:解密裝置,設(shè)置在數(shù)據(jù)庫的讀取接口內(nèi),用于獲取與讀取請求對應(yīng)的讀取對象,并在讀取對象為加密對象的情況下,對加密對象進行解密得到解密對象,讀取解密對象;在讀取對象不為加密對象的情況下,直接讀取該讀取對象。
[0038]如圖2所示,本系統(tǒng)通過將加密裝置和解密裝置分別封裝入數(shù)據(jù)存儲系統(tǒng)和數(shù)據(jù)讀取系統(tǒng),將加密/解密過程注入到數(shù)據(jù)存取系統(tǒng)框架中,從而可以根據(jù)配置信息,在存儲對象前加密,讀取對象后解密,完成了數(shù)據(jù)存取系統(tǒng)架構(gòu)中自動的加密/解密。
[0039]具體地,圖2中示出的加密裝置和解密裝置,不僅能夠通過重寫、重載或擴充的方式可以實現(xiàn),而且任何能夠注入到存儲過程/讀取過程的方式均可;并且任何具有數(shù)據(jù)存取系統(tǒng)特征實現(xiàn)的數(shù)據(jù)存儲都可以使用本申請的加密裝置和解密裝置有不同的實現(xiàn),即無需在數(shù)據(jù)存取系統(tǒng)框架中增加裝置。另外,還可以直接將本系統(tǒng)的加密裝置和解密裝置內(nèi)置到數(shù)據(jù)存取系統(tǒng)框架中。任何將本裝置思想內(nèi)置到數(shù)據(jù)存取系統(tǒng)框架中的方案均為本專利的變形,不超出本申請的保護范圍。
[0040]更具體地,在本發(fā)明的上述實施例中,可以為數(shù)據(jù)存取系統(tǒng)實體類進行擴展,首先配置需要加密的加密屬性以及對應(yīng)的加密/解密密鑰,下面以O(shè)RM為例詳細(xì)介紹本發(fā)明:
[0041]其中,ORM系統(tǒng)框架名稱為AD0.NET Entity Framework。具體地,可以將加密裝置內(nèi)置于數(shù)據(jù)存取系統(tǒng)框架的數(shù)據(jù)庫的存儲入口,可以預(yù)先設(shè)置好該加密裝置的加密屬性,例如:用戶的身份證號、用戶的年齡等。具體地,找到數(shù)據(jù)存取系統(tǒng)架構(gòu)的存儲數(shù)據(jù)對象的存儲入口。以 Microsoft.Net Framework 中的 AD0.NET Entity Framework 為例,ObjectContext對象的SaveChanges方法及重載方法為數(shù)據(jù)庫的存儲入口。然后對存儲數(shù)據(jù)對象的方法進行重寫(或擴充、重載),將該加密裝置加入數(shù)據(jù)庫的存儲入口之后,一旦用戶發(fā)起存儲請求,存儲的處理過程將被暫停,直接進入加密的處理過程。
[0042]具體地,可以通過檢測該存儲請求攜帶的數(shù)據(jù)對象中是否存在需要加密的數(shù)據(jù),也即檢測該數(shù)據(jù)對象中是否存在與預(yù)設(shè)的加密屬性對應(yīng)的屬性數(shù)據(jù),如果存在,則使用預(yù)設(shè)的加密密鑰加密該屬性數(shù)據(jù),得到加密數(shù)據(jù)。在該實施例中,也即數(shù)據(jù)庫的存儲方法默認(rèn)存儲行為發(fā)生前加密裝置獲得數(shù)據(jù)對象。
[0043]例如,在Microsoft.Net Framework 中的 AD0.NET Entity Framework 中,通過ObjectStateManage可以獲得當(dāng)前被操作的數(shù)據(jù)對象的集合,并且遮蔽SaveChanges方法(即存儲過程)并調(diào)用父類的實現(xiàn)來完成加密存儲。
[0044]在上述實施例中,在接收到存儲請求之后,可以直接從存儲請求中攜帶的數(shù)據(jù)對象中提取加密屬性對應(yīng)的屬性數(shù)據(jù)。具體地,在Microsoft.Net Framework中,可以使用反射的方式從數(shù)據(jù)對象中獲得加密屬性的屬性數(shù)據(jù),通過加密屬性的信息獲取或修改屬性數(shù)據(jù)的值。例如,可以通過反射的方法從用戶輸入的數(shù)據(jù)對象中提取加密屬性(如身份證號)的屬性數(shù)據(jù),該屬性數(shù)據(jù)的值可以是18位自然數(shù)組成的一個字符串,可以修改該字符串的值。
[0045]在獲取該屬性數(shù)據(jù)之后,可以根據(jù)預(yù)設(shè)的加密密鑰對該屬性數(shù)據(jù)進行加密,在上述例子中,可以使用預(yù)設(shè)的加密密鑰對獲取的18位的字符串進行加密得到加密數(shù)據(jù),然后使用該加密數(shù)據(jù)對身份證號(即加密屬性)重新賦值,從而可以獲取加密對象。
[0046]在獲取加密對象之后執(zhí)行數(shù)據(jù)存取系統(tǒng)架構(gòu)的存儲方法對加密對象進行存儲。
[0047]本系統(tǒng)上述實施例中的解密裝置也內(nèi)置于數(shù)據(jù)庫中,具體地,找到數(shù)據(jù)存取系統(tǒng)框架中讀取對象數(shù)據(jù)為數(shù)據(jù)對象賦值的讀取入口,將解密裝置內(nèi)置于其中,在獲取到用戶讀取該讀取對象的請求之后,直接對讀取對象使用與預(yù)設(shè)的加密密鑰對應(yīng)得解密密鑰解密對象得到解密對象,以供用戶讀取。
[0048]更具體地,仍然以Microsoft.Net Framework 中的 AD0.NET Entity Framework 為例,ObjectContext對象的LoadProperty方法負(fù)責(zé)將數(shù)據(jù)對象賦值,重寫、擴充或重載數(shù)據(jù)的讀取賦值方法,在每次屬性賦值操作后,如果檢測到讀取的實體的屬性配置為加密屬性,則使用與預(yù)設(shè)加密密鑰對應(yīng)的解密密鑰解密該屬性數(shù)據(jù),得到解密對象。
[0049]具體地,在本發(fā)明的上述實施例中,獲取用戶的存儲請求或讀取,可以是通過接收用戶的存儲數(shù)據(jù)對象的請求或接收用戶的讀取請求實現(xiàn)。
[0050]圖3是根據(jù)本發(fā)明實施例的對象加密存儲方法的流程圖,如圖3所示該方法包括如下步驟:
[0051]步驟S102,獲取存儲請求,其中,存儲請求攜帶數(shù)據(jù)對象。
[0052]步驟S104,獲取與存儲請求對應(yīng)的加密屬性。
[0053]步驟S106,對數(shù)據(jù)對象中對應(yīng)加密屬性的屬性數(shù)據(jù)進行加密得到加密對象。
[0054]步驟S108,將加密對象保存入數(shù)據(jù)庫。
[0055]采用本發(fā)明,將加密裝置設(shè)置在數(shù)據(jù)庫的存儲接口內(nèi),在獲取模塊獲取到用戶的存儲請求之后,通過屬性獲取模塊和加密模塊直接對數(shù)據(jù)對象中需要加密的數(shù)據(jù)加密后才通過保存模塊保存加密后的加密對象,從而可以實現(xiàn)數(shù)據(jù)存取系統(tǒng)架構(gòu)中對象屬性級別的自動加密,開發(fā)者無需手動開發(fā)加密/解密的過程,僅需要配置需要加密的屬性即可,從而解決了現(xiàn)有技術(shù)中數(shù)據(jù)存取系統(tǒng)架構(gòu)中加密對象數(shù)據(jù)的過程復(fù)雜、開發(fā)效率低下的問題,實現(xiàn)了數(shù)據(jù)存取系統(tǒng)架構(gòu)中自動加密,極大的降低了手動加密解密開發(fā)成本,并且簡化了對象數(shù)據(jù)加密的過程,提高了處理速度和開發(fā)效率,降低了開發(fā)成本。
[0056]具體地,在上述實施例中對含有加密屬性的數(shù)據(jù)對象進行屬性級別加密時,可以控制數(shù)據(jù)對象中的一個或多個屬性數(shù)據(jù)進行加密,從而獲得加密后的加密對象??赡苁遣糠旨用?,也可能是所有屬性的值全部被加密。
[0057]具體地,在本發(fā)明的上述實施例中不僅能夠通過重寫、重載或擴充的方式在數(shù)據(jù)存取系統(tǒng)架構(gòu)中實現(xiàn)加密存儲,而且任何能夠注入到存儲過程/讀取過程的方式均可以實現(xiàn)加密存儲;并且任何具有數(shù)據(jù)存取系統(tǒng)特征實現(xiàn)的數(shù)據(jù)存儲都可以使用本申請的加密裝置和解密裝置有不同的實現(xiàn),即無需在數(shù)據(jù)存取系統(tǒng)框架中增加加密裝置或解密裝置。另夕卜,還可以直接將本系統(tǒng)的加密裝置和解密裝置內(nèi)置到數(shù)據(jù)存取系統(tǒng)框架中。
[0058]根據(jù)本發(fā)明的上述實施例,對數(shù)據(jù)對象中對應(yīng)加密屬性的屬性數(shù)據(jù)進行加密得到加密數(shù)據(jù)的步驟可以包括:從數(shù)據(jù)對象中提取與加密屬性對應(yīng)的屬性數(shù)據(jù);使用預(yù)設(shè)加密密鑰對屬性數(shù)據(jù)進行加密得到加密數(shù)據(jù);使用加密數(shù)據(jù)更新數(shù)據(jù)對象得到加密數(shù)據(jù)。
[0059]具體地,獲取與存儲請求對應(yīng)的加密屬性的步驟可以包括:暫停存儲數(shù)據(jù)對象;使用加密函數(shù)調(diào)取加密屬性。更具體地,獲取加密屬性可以通過如下步驟實現(xiàn):從數(shù)據(jù)對象中提取實體信息,其中,實體信息中包括實體屬性;在預(yù)設(shè)屬性數(shù)據(jù)庫中存在與實體屬性一致的加密屬性的情況下,提取加密屬性。
[0060]其中,加密屬性可以是在將加密裝置內(nèi)置于數(shù)據(jù)庫中是預(yù)設(shè)好的屬性,也可以是根據(jù)不同的數(shù)據(jù)對象的數(shù)據(jù)內(nèi)容而設(shè)置的加密屬性。該加密屬性可以是保存在加密裝置中的需要加密的屬性。
[0061]具體地,在從數(shù)據(jù)對象中提取實體信息之前,可以先從預(yù)設(shè)屬性數(shù)據(jù)庫中提取預(yù)設(shè)屬性,在加密屬性與預(yù)設(shè)屬性一致的情況下,才需要對該加密屬性對應(yīng)的屬性數(shù)據(jù)加密,如果不一致,則不需要對該加密屬性對應(yīng)的加密屬性加密。將數(shù)據(jù)對象中的所有加密屬性均需要經(jīng)過上述是否需要加密的判定。
[0062]在本發(fā)明的上述實施例中,在將加密對象保存入數(shù)據(jù)庫之后,對象加密存儲方法還可以包括:獲取與讀取請求對應(yīng)的讀取對象;檢測讀取對象是否為加密對象;在讀取對象為加密對象的情況下,對加密對象進行解密得到解密對象,讀取解密對象;在讀取對象不為加密對象的情況下,直接讀取該讀取對象。
[0063]更具體地,在本發(fā)明的上述實施例中,可以為數(shù)據(jù)存取系統(tǒng)實體類進行擴展,首先配置需要加密的加密屬性以及對應(yīng)的加密/解密密鑰,下面以數(shù)據(jù)存取系統(tǒng)為例詳細(xì)介紹本發(fā)明:
[0064]可以將加密裝置內(nèi)置于數(shù)據(jù)存取系統(tǒng)框架的數(shù)據(jù)庫的存儲入口,可以在預(yù)設(shè)屬性數(shù)據(jù)庫中預(yù)先設(shè)置好該加密裝置的加密屬性,例如:用戶的身份證號、用戶的年齡等。具體地,找到數(shù)據(jù)存取系統(tǒng)架構(gòu)的存儲數(shù)據(jù)對象的存儲入口。以Microsoft.Net Framework中的 AD0.NET Entity Framework 為例,0bjectContext 對象的 SaveChanges 方法及重載方法為數(shù)據(jù)庫的存儲入口。然后對存儲數(shù)據(jù)對象的方法進行重寫(或擴充、重載),將該加密裝置加入數(shù)據(jù)庫的存儲入口之后,一旦用戶發(fā)起存儲請求,存儲的處理過程將被暫停,直接進入加密的處理過程。其中,預(yù)設(shè)屬性數(shù)據(jù)庫可以保存在數(shù)據(jù)庫中。
[0065]具體地,可以通過檢測該存儲請求攜帶的數(shù)據(jù)對象中是否存在需要加密的數(shù)據(jù),也即檢測該數(shù)據(jù)對象中是否存在與預(yù)設(shè)的加密屬性對應(yīng)的屬性數(shù)據(jù),如果存在,則使用預(yù)設(shè)的加密密鑰加密該屬性數(shù)據(jù),得到加密數(shù)據(jù)。在該實施例中,也即數(shù)據(jù)庫的存儲方法默認(rèn)存儲行為發(fā)生前加密裝置獲得數(shù)據(jù)對象。
[0066]例如,在Microsoft.Net Framework 中的 AD0.NET Entity Framework 中,通過ObjectStateManage可以獲得當(dāng)前被操作的數(shù)據(jù)對象的集合,并且遮蔽SaveChanges方法(即上述實施例中的暫停存儲過程)并在對數(shù)據(jù)對象完成加密之后調(diào)用數(shù)據(jù)庫中初始的SaveChanges方法來完成對加密對象的加密存儲。
[0067]在上述實施例中,在接收到存儲請求之后,可以直接從存儲請求中攜帶的數(shù)據(jù)對象中提取加密屬性對應(yīng)的屬性數(shù)據(jù)。具體地,在Microsoft.Net Framework中,可以使用反射的方式從數(shù)據(jù)對象中獲得加密屬性的屬性數(shù)據(jù),通過加密屬性的信息獲取或修改屬性數(shù)據(jù)的值。例如,可以通過反射的方法從用戶輸入的數(shù)據(jù)對象中提取加密屬性(如身份證號)的屬性數(shù)據(jù),該屬性數(shù)據(jù)的值可以是18位自然數(shù)組成的一個字符串,可以修改該字符串的值。
[0068]具體地,加密裝置可以在接收到存儲請求之后,暫停數(shù)據(jù)庫中初始的存儲過程,從數(shù)據(jù)對象中提取實體信息,該實體信息中記載著數(shù)據(jù)對象的各種實體屬性、各種實體屬性對應(yīng)的屬性數(shù)據(jù)以及對應(yīng)數(shù)據(jù)庫中的各個字段,例如:實體信息中包括對象(如,自然人)的姓名、身份證號:1XXX,身高:165cm,以及對應(yīng)對象“自然人”在數(shù)據(jù)庫中的字段:姓名、身高、身份證號。然后在預(yù)設(shè)屬性數(shù)據(jù)庫中存在與實體屬性一致的加密屬性的情況下,讀取加密屬性,具體地,可以使用實體屬性在預(yù)設(shè)屬性數(shù)據(jù)庫中進行匹配得到加密屬性。例如:在預(yù)設(shè)屬性數(shù)據(jù)庫中查找與實體屬性(姓名、年齡、身高以及身份證號)一致的數(shù)據(jù),查找到與實體屬性一致的身份證號和年齡兩個加密屬性。然后從數(shù)據(jù)對象(在該實施例中優(yōu)選從實體信息,可以提高處理速度)中提取加密對象對應(yīng)的屬性數(shù)據(jù)(如,年齡對應(yīng)的數(shù)據(jù)值:15,身份證號對應(yīng)的值:123456)。
[0069]在獲取該屬性數(shù)據(jù)之后,可以根據(jù)預(yù)設(shè)的加密密鑰對該屬性數(shù)據(jù)進行加密。具體地,將提取到的屬性數(shù)據(jù)使用預(yù)設(shè)加密密鑰加密,得到加密數(shù)據(jù),使用該加密數(shù)據(jù)更新加密以得到加密對象。更具體地,使用該加密數(shù)據(jù)更新實體信息中加密屬性對應(yīng)的值就可以得到加密對象,也即使用加密數(shù)據(jù)替換加密屬性原始位置的值。
[0070]例如,可以使用預(yù)設(shè)的加密密鑰對獲取的18位的字符串進行加密得到加密數(shù)據(jù),然后使用該加密數(shù)據(jù)對身份證號(即加密屬性)重新賦值,從而可以獲取加密對象。
[0071]在獲取加密對象之后執(zhí)行數(shù)據(jù)存取系統(tǒng)架構(gòu)的存儲方法對加密對象進行存儲。
[0072]本系統(tǒng)上述實施例中的解密裝置也內(nèi)置于數(shù)據(jù)庫中,具體地,找到數(shù)據(jù)存取系統(tǒng)框架中讀取對象數(shù)據(jù)為數(shù)據(jù)對象賦值的讀取入口,將解密裝置內(nèi)置于其中,在獲取到用戶讀取該讀取對象的請求之后,直接對讀取對象使用與預(yù)設(shè)的加密密鑰對應(yīng)得解密密鑰解密對象得到解密對象,以供用戶讀取。
[0073]更具體地,仍然以Microsoft.Net Framework 中的 AD0.NET Entity Framework 為例,ObjectContext對象的LoadProperty方法負(fù)責(zé)將數(shù)據(jù)對象賦值,重寫、擴充或重載數(shù)據(jù)的讀取賦值方法,在每次屬性賦值操作后,如果檢測到讀取的實體的屬性配置為加密屬性,則使用與預(yù)設(shè)的加密密鑰對應(yīng)的解密密鑰解密該屬性數(shù)據(jù),得到解密實體。在該實施例中可以僅僅檢測實體屬性中是否存在加密屬性,即,可以僅僅檢測數(shù)據(jù)對象中是否存在需要加密的屬性,而不檢測實體屬性的值是否合法,以提高加密的速度。
[0074]具體地,在本發(fā)明的上述實施例中,獲取用戶的存儲請求或讀取,可以是通過接收用戶的存儲數(shù)據(jù)對象的請求或接收用戶的讀取請求實現(xiàn)。
[0075]需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0076]圖4是根據(jù)本發(fā)明實施例的對象加密存儲裝置的示意圖,如圖4所示該方法包括:請求獲取模塊10,用于獲取存儲請求,其中,存儲請求攜帶數(shù)據(jù)對象;屬性獲取模塊30,用于獲取與存儲請求對應(yīng)的加密屬性;加密模塊50,用于對數(shù)據(jù)對象中對應(yīng)加密屬性的屬性數(shù)據(jù)進行加密得到加密對象;保存模塊70,用于將加密對象保存入數(shù)據(jù)庫。
[0077]采用本發(fā)明,將加密裝置設(shè)置在數(shù)據(jù)庫的存儲接口內(nèi),在獲取模塊獲取到用戶的存儲請求之后,通過屬性獲取模塊和加密模塊直接對數(shù)據(jù)對象中需要加密的數(shù)據(jù)加密后才通過保存模塊保存加密后的加密對象,從而可以實現(xiàn)數(shù)據(jù)存取系統(tǒng)架構(gòu)中對象屬性級別的自動加密,開發(fā)者無需手動開發(fā)加密/解密的過程,僅需要配置需要加密的屬性即可,從而解決了現(xiàn)有技術(shù)中數(shù)據(jù)存取系統(tǒng)架構(gòu)中加密對象數(shù)據(jù)的過程復(fù)雜、開發(fā)效率低下的問題,實現(xiàn)了數(shù)據(jù)存取系統(tǒng)架構(gòu)中自動加密,極大的降低了手動加密解密開發(fā)成本,并且簡化了對象數(shù)據(jù)加密的過程,提高了處理速度和開發(fā)效率,降低了開發(fā)成本。
[0078]具體地,在本發(fā)明的上述實施例中不僅能夠通過重寫、重載或擴充的方式在數(shù)據(jù)存取系統(tǒng)架構(gòu)中實現(xiàn)加密存儲,而且任何能夠注入到存儲過程/讀取過程的方式均可以實現(xiàn)加密存儲;并且任何具有數(shù)據(jù)存取系統(tǒng)特征實現(xiàn)的數(shù)據(jù)存儲都可以使用本申請的加密裝置和解密裝置有不同的實現(xiàn),即無需在數(shù)據(jù)存取系統(tǒng)框架中增加加密裝置或解密裝置。另夕卜,還可以直接將本系統(tǒng)的加密裝置和解密裝置內(nèi)置到數(shù)據(jù)存取系統(tǒng)框架中。
[0079]根據(jù)本發(fā)明的上述實施例,加密模塊50可以包括:提取模塊,用于從數(shù)據(jù)對象中提取與加密屬性對應(yīng)的屬性數(shù)據(jù);加密子模塊,用于使用預(yù)設(shè)加密密鑰對屬性數(shù)據(jù)進行加密得到加密數(shù)據(jù);更新模塊,用于使用加密數(shù)據(jù)更新數(shù)據(jù)對象得到加密數(shù)據(jù)。
[0080]其中,加密屬性可以是在將加密裝置內(nèi)置于數(shù)據(jù)庫中是預(yù)設(shè)好的屬性,也可以是根據(jù)不同的數(shù)據(jù)對象的數(shù)據(jù)內(nèi)容而設(shè)置的加密屬性。該加密屬性可以是保存在加密裝置中的需要加密的屬性。
[0081 ] 在本發(fā)明的上述實施例中,對象加密存儲裝置還可以包括:對象獲取模塊,用于獲取與讀取請求對應(yīng)的讀取對象;檢測模塊,用于檢測讀取對象是否為加密對象;解密讀取模塊,用于在讀取對象為加密對象的情況下,對加密對象進行解密得到解密對象,讀取解密對象;對象讀取模塊,用于在讀取對象不為加密對象的情況下,直接讀取該讀取對象。
[0082]根據(jù)本發(fā)明的上述實施例,屬性獲取模塊可以包括:暫停模塊,用于暫停存儲數(shù)據(jù)對象;調(diào)取模塊,用于使用加密函數(shù)調(diào)取加密屬性。
[0083]具體地,屬性提取模塊,從數(shù)據(jù)對象中提取實體信息,其中,實體信息中包括實體屬性;屬性讀取模塊,用于在預(yù)設(shè)屬性數(shù)據(jù)庫中存在與實體屬性一致的加密屬性的情況下,讀取加密屬性。
[0084]更具體地,在本發(fā)明的上述實施例中,可以為數(shù)據(jù)存取系統(tǒng)實體類進行擴展,首先配置需要加密的加密屬性以及對應(yīng)的加密/解密密鑰,下面以數(shù)據(jù)存取系統(tǒng)為例詳細(xì)介紹本發(fā)明:
[0085]可以將加密裝置內(nèi)置于數(shù)據(jù)存取系統(tǒng)框架的數(shù)據(jù)庫的存儲入口,可以在預(yù)設(shè)屬性數(shù)據(jù)庫中預(yù)先設(shè)置好該加密裝置的加密屬性,例如:用戶的身份證號、用戶的年齡等。具體地,找到數(shù)據(jù)存取系統(tǒng)架構(gòu)的存儲數(shù)據(jù)對象的存儲入口。以Microsoft.Net Framework中的 AD0.NET Entity Framework 為例,0bjectContext 對象的 SaveChanges 方法及重載方法為數(shù)據(jù)庫的存儲入口。然后對存儲數(shù)據(jù)對象的方法進行重寫(或擴充、重載),將該加密裝置加入數(shù)據(jù)庫的存儲入口之后,一旦用戶發(fā)起存儲請求,存儲的處理過程將被暫停,直接進入加密的處理過程。其中,預(yù)設(shè)屬性數(shù)據(jù)庫可以保存在數(shù)據(jù)庫中。
[0086]具體地,可以通過檢測該存儲請求攜帶的數(shù)據(jù)對象中是否存在需要加密的數(shù)據(jù),也即檢測該數(shù)據(jù)對象中是否存在與預(yù)設(shè)的加密屬性對應(yīng)的屬性數(shù)據(jù),如果存在,則使用預(yù)設(shè)的加密密鑰加密該屬性數(shù)據(jù),得到加密數(shù)據(jù)。在該實施例中,也即數(shù)據(jù)庫的存儲方法默認(rèn)存儲行為發(fā)生前加密裝置獲得數(shù)據(jù)對象。
[0087]例如,在Microsoft.Net Framework 中的 AD0.NET Entity Framework 中,通過ObjectStateManage可以獲得當(dāng)前被操作的數(shù)據(jù)對象的集合,并且遮蔽SaveChanges方法(即上述實施例中的暫停存儲過程)并在對數(shù)據(jù)對象完成加密之后調(diào)用數(shù)據(jù)庫中初始的SaveChanges方法來完成對加密對象的加密存儲。
[0088]在上述實施例中,在接收到存儲請求之后,可以直接從存儲請求中攜帶的數(shù)據(jù)對象中提取加密屬性對應(yīng)的屬性數(shù)據(jù)。具體地,在Microsoft.Net Framework中,可以使用反射的方式從數(shù)據(jù)對象中獲得加密屬性的屬性數(shù)據(jù),通過加密屬性的信息獲取或修改屬性數(shù)據(jù)的值。例如,可以通過反射的方法從用戶輸入的數(shù)據(jù)對象中提取加密屬性(如身份證號)的屬性數(shù)據(jù),該屬性數(shù)據(jù)的值可以是18位自然數(shù)組成的一個字符串,可以修改該字符串的值。
[0089]具體地,加密裝置可以在接收到存儲請求之后,暫停數(shù)據(jù)庫中初始的存儲過程,從數(shù)據(jù)對象中提取實體信息,該實體信息中記載著數(shù)據(jù)對象的各種實體屬性、各種實體屬性對應(yīng)的屬性數(shù)據(jù)以及對應(yīng)數(shù)據(jù)庫中的各個字段,例如:實體信息中包括對象(如,自然人)的姓名、身份證號:1XXX,身高:165cm,以及對應(yīng)對象“自然人”在數(shù)據(jù)庫中的字段:姓名、身高、身份證號。然后在預(yù)設(shè)屬性數(shù)據(jù)庫中存在與實體屬性一致的加密屬性的情況下,讀取加密屬性,具體地,可以使用實體屬性在預(yù)設(shè)屬性數(shù)據(jù)庫中進行匹配得到加密屬性。例如:在預(yù)設(shè)屬性數(shù)據(jù)庫中查找與實體屬性(姓名、年齡、身高以及身份證號)一致的數(shù)據(jù),查找到與實體屬性一致的身份證號和年齡兩個加密屬性。然后從數(shù)據(jù)對象(在該實施例中優(yōu)選從實體信息,可以提高處理速度)中提取加密對象對應(yīng)的屬性數(shù)據(jù)(如,年齡對應(yīng)的數(shù)據(jù)值:15,身份證號對應(yīng)的值:123456)。
[0090]在獲取該屬性數(shù)據(jù)之后,可以根據(jù)預(yù)設(shè)的加密密鑰對該屬性數(shù)據(jù)進行加密。具體地,將提取到的屬性數(shù)據(jù)使用預(yù)設(shè)加密密鑰加密,得到加密數(shù)據(jù),使用該加密數(shù)據(jù)更新加密以得到加密對象。更具體地,使用該加密數(shù)據(jù)更新實體信息中加密屬性對應(yīng)的值就可以得到加密對象,也即使用加密數(shù)據(jù)替換加密屬性原始位置的值。
[0091]例如,可以使用預(yù)設(shè)的加密密鑰對獲取的18位的字符串進行加密得到加密數(shù)據(jù),然后使用該加密數(shù)據(jù)對身份證號(即加密屬性)重新賦值,從而可以獲取加密對象。
[0092]在獲取加密對象之后執(zhí)行數(shù)據(jù)存取系統(tǒng)架構(gòu)的存儲方法對加密對象進行存儲。
[0093]本系統(tǒng)上述實施例中的解密裝置也內(nèi)置于數(shù)據(jù)庫中,具體地,找到數(shù)據(jù)存取系統(tǒng)框架中讀取對象數(shù)據(jù)為數(shù)據(jù)對象賦值的讀取入口,將解密裝置內(nèi)置于其中,在獲取到用戶讀取該讀取對象的請求之后,直接對讀取對象,使用與預(yù)設(shè)的加密密鑰對應(yīng)得解密密鑰解密對象得到解密對象,以供用戶讀取。
[0094]更具體地,仍然以Microsoft.Net Framework 中的 AD0.NET Entity Framework 為例,ObjectContext對象的LoadProperty方法負(fù)責(zé)將數(shù)據(jù)對象賦值,重寫、擴充或重載數(shù)據(jù)的讀取賦值方法,在每次屬性賦值操作后,如果檢測到讀取的實體的屬性配置為加密屬性,則使用與預(yù)設(shè)的加密密鑰對應(yīng)的解密密鑰解密該屬性數(shù)據(jù),得到解密實體。在該實施例中可以僅僅檢測實體屬性中是否存在加密屬性,即,可以僅僅檢測數(shù)據(jù)對象中是否存在需要加密的屬性,而不檢測實體屬性的值是否合法,以提高加密的速度。
[0095]具體地,在本發(fā)明的上述實施例中,獲取用戶的存儲請求或讀取,可以是通過接收用戶的存儲數(shù)據(jù)對象的請求或接收用戶的讀取請求實現(xiàn)。
[0096]從以上的描述中,可以看出,本發(fā)明實現(xiàn)了如下技術(shù)效果:采用本發(fā)明,將加密裝置設(shè)置入數(shù)據(jù)庫的存儲接口內(nèi),在獲取模塊獲取到用戶的存儲請求之后,通過屬性獲取模塊和加密模塊直接對數(shù)據(jù)對象中需要加密的數(shù)據(jù)加密后才通過保存模塊保存加密后的加密對象,從而可以實現(xiàn)數(shù)據(jù)存取系統(tǒng)架構(gòu)中對象屬性級別的自動加密,開發(fā)者無需手動開發(fā)加密/解密的過程,僅需要配置需要加密的屬性即可,從而解決了現(xiàn)有技術(shù)中數(shù)據(jù)存取系統(tǒng)架構(gòu)中加密對象數(shù)據(jù)的過程復(fù)雜、效率低下的問題,實現(xiàn)了數(shù)據(jù)存取系統(tǒng)架構(gòu)中自動加密,極大的降低了手動加密解密開發(fā)成本,并且簡化了對象數(shù)據(jù)加密的過程,提高了處理速度和效率。
[0097]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0098]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種對象加密存儲方法,其特征在于,包括: 獲取存儲請求,其中,所述存儲請求攜帶數(shù)據(jù)對象; 獲取與所述存儲請求對應(yīng)的加密屬性; 對所述數(shù)據(jù)對象中對應(yīng)所述加密屬性的屬性數(shù)據(jù)進行加密得到加密對象; 將所述加密對象保存入數(shù)據(jù)庫。
2.根據(jù)權(quán)利要求1所述的對象加密存儲方法,其特征在于,對所述數(shù)據(jù)對象中對應(yīng)所述加密屬性的屬性數(shù)據(jù)進行加密得到加密對象的步驟包括: 從所述數(shù)據(jù)對象中提取與所述加密屬性對應(yīng)的所述屬性數(shù)據(jù); 使用預(yù)設(shè)加密密鑰對所述屬性數(shù)據(jù)進行加密得到加密數(shù)據(jù); 使用所述加密數(shù)據(jù)更新所述數(shù)據(jù)對象得到所述加密對象。
3.根據(jù)權(quán)利要求2所述的對象加密存儲方法,其特征在于,在將所述加密對象保存入數(shù)據(jù)庫之后,所述對象加密存儲方法還包括: 獲取與讀取請求對應(yīng)的 讀取對象; 檢測所述讀取對象是否為所述加密對象; 在所述讀取對象為所述加密對象的情況下,對所述加密對象進行解密得到解密對象,讀取所述解密對象; 在所述讀取對象不為所述加密對象的情況下,直接讀取所述讀取對象。
4.根據(jù)權(quán)利要求1所述的對象加密存儲方法,其特征在于,獲取與所述存儲請求對應(yīng)的加密屬性的步驟包括: 從所述數(shù)據(jù)對象中提取實體信息,其中,所述實體信息中包括實體屬性; 在預(yù)設(shè)屬性數(shù)據(jù)庫中存在與所述實體屬性一致的所述加密屬性的情況下,提取所述加密屬性。
5.一種對象加密存儲裝置,其特征在于,包括: 請求獲取模塊,用于獲取存儲請求,其中,所述存儲請求攜帶數(shù)據(jù)對象; 屬性獲取模塊,用于獲取與所述存儲請求對應(yīng)的加密屬性; 加密模塊,用于對所述數(shù)據(jù)對象中對應(yīng)所述加密屬性的屬性數(shù)據(jù)進行加密得到加密對象; 保存模塊,用于將所述加密對象保存入數(shù)據(jù)庫。
6.根據(jù)權(quán)利要求5所述的對象加密存儲裝置,其特征在于,所述加密模塊包括: 數(shù)據(jù)提取模塊,用于從所述數(shù)據(jù)對象中提取與所述加密屬性對應(yīng)的所述屬性數(shù)據(jù); 加密子模塊,用于使用預(yù)設(shè)加密密鑰對所述屬性數(shù)據(jù)進行加密得到加密數(shù)據(jù); 更新模塊,用于使用所述加密數(shù)據(jù)更新所述數(shù)據(jù)對象得到所述加密對象。
7.根據(jù)權(quán)利要求6所述的對象加密存儲裝置,其特征在于,所述對象加密存儲裝置還包括: 對象獲取模塊,用于獲取與讀取請求對應(yīng)的讀取對象; 檢測模塊,用于檢測所述讀取對象是否為所述加密對象; 解密讀取模塊,用于在所述讀取對象為所述加密對象的情況下,對所述加密對象進行解密得到解密對象,讀取所述解密對象; 對象讀取模塊,用于在所述讀取對象不為所述加密對象的情況下,直接讀取所述讀取對象。
8.根據(jù)權(quán)利要求5所述的對象加密存儲裝置,其特征在于,所述屬性獲取模塊包括: 屬性提取模塊,從所述數(shù)據(jù)對象中提取實體信息,其中,所述實體信息中包括實體屬性; 屬性讀取模塊,用于在預(yù)設(shè)屬性數(shù)據(jù)庫中存在與所述實體屬性一致的所述加密屬性的情況下,讀取所述加密屬性。
9.一種對象加S存儲系統(tǒng),其特征在于,包括: 加密裝置,設(shè)置在數(shù)據(jù)庫的存儲接口內(nèi),用于獲取存儲請求以及與所述存儲請求對應(yīng)的加密屬性,在對數(shù)據(jù)對象中對應(yīng)所述加密屬性的屬性數(shù)據(jù)進行加密得到加密對象之后,將所述加密對象保存入數(shù)據(jù)庫, 其中,所述存儲請求攜帶所述數(shù)據(jù)對象。
10.根據(jù)權(quán)利要求9所述的對象加密存儲系統(tǒng),其特征在于,對象加密存儲系統(tǒng)還包括: 解密裝置,設(shè)置在所述數(shù)據(jù)庫的讀取接口內(nèi),用于獲取與讀取請求對應(yīng)的讀取對象,并在所述讀取對象為所述加密對象的情況下,對所述加密對象進行解密得到解密對象,讀取所述解密對象;在所述讀取對`象不為所述加密對象的情況下,直接讀取所述讀取對象。
【文檔編號】G06F17/30GK103605741SQ201310586090
【公開日】2014年2月26日 申請日期:2013年11月19日 優(yōu)先權(quán)日:2013年11月19日
【發(fā)明者】池雷 申請人:北京國雙科技有限公司