數據加密及解密方法、系統及設備的製作方法
2023-05-14 17:03:06 3
專利名稱:數據加密及解密方法、系統及設備的製作方法
技術領域:
本發明涉及信息安全領域,更具體地說,涉及一種數據加密及解密方法、 系統及i殳備。
技術背景 目前大量的服務提供商,例如軟體即服務(Software-as-a-service, SaaS ) 提供商,通常會提供財務、客戶關係管理、供應鏈管理等軟體給客戶。當客 戶使用這些軟體提供的服務時,客戶的數據需保存在服務提供商的公共數據 庫中,若不對這些數據進行加密處理,就可能會有部分敏感數據被洩露。為 避免這種情況的'發生,就有必要對數據進行加密。 現有的數據加密方法有多種,包括對稱加密算法、不對稱加密算法、不 可逆加密算法等。其中 對稱加密算法是應用較早的加密算法,技術成熟。在計算機網絡中廣泛 使用的對稱加密算法有數據加密算法(Data Encryption Standard, DES )和國 際數據加密算法(International Data Encryption Algorithm, IDEA)等,美國國 家標準局倡導的高級加密標準(Advanced Encryption Standard, AES )即將作 為新標準取代DES。在對稱加密算法中,數據發信方將原文和密鑰一起經過加 密算法處理後,使其變成複雜的加密密文發送出去。收信方收到密文後,若 想解讀原文,則需要使用加密用過的密鑰及相同算法的逆算法對密文進行解 密,才能使其恢復成可讀原文。在對稱加密算法中,使用的密鑰只有一個, 發信方和收信方都使用這個密鑰對數據進行加密和解密,因此要求解密方事 先必須知道密鑰。對稱加密算法的特點是算法公開、計算量小、加密速度快、 加密效率高。不足之處是,交易雙方都使用同樣的密鑰,安全性得不到保證。 此外,每對用戶每次使用對稱加密算法時,都需要使用其他人不知道的惟一 鑰匙,這會使得發收信雙方所擁有的鑰匙數量成幾何級數增長,密鑰管理成 為用戶的負擔,管理成本較高。 不對稱加密算法的應用也非常廣泛,常用的不對稱加密算法有公鑰加密 算法(Rivest-Shamir-Adleman, RSA)和美國國家標準局提出的數字籤名算法 (Digital Signature Algorithm, DSA )。不對稱加密算法使用兩個完全不同但 相互匹配的鑰匙,即公鑰和私鑰,該算法利用公鑰對原文進行加密,利用私 鑰對密文進行解密。發信方知道收信方的公鑰,而收信方是唯一知道自己私 鑰的人。不對稱加密算法的基本原理是,如果發信方想發送只有收信方才能
解讀的加密信息,發信方必須首先,人收信方獲取到7>鑰,然後利用該7>鑰來
加密原文;收信方收到密文後,使用自己的私鑰解密密文。由於不對稱算法 擁有兩個密鑰,因而特別適用於分布式系統中的數據加密。
不可逆加密算法的特徵是加密過程中不需使用密鑰,在計算機網絡中應 用較多的不可逆加密算法有MD5是信息-摘要算法(Message-Digest algorithm 5, MD5)和由美國國家標準局建議的安全雜亂信息標準(Secure Hash Standard, SHS )等。在不可逆加密算法中,輸入原文後由系統直接經過加密 算法處理成密文,這種加密後的數據是無法被解密的,只有重新輸入原文, 並再次經過同樣不可逆的加密算法處理,得到相同的加密密文並被系統重新 識別後,才能真正解密。顯然,在這類加密過程中,加密和解密都是用戶自 己,而所謂解密,實際上就是重新加一次密,所應用的"密碼"也就是輸入 的原文。不可逆加密算法不存在密鑰保管和分發問題,非常適合在分布式網 絡系統上使用,但因加密計算複雜,工作量相當繁重,通常只在數據量有限 的情形下使用,如廣泛應用在計算機系統中的口令加密,利用的就是不可逆 加密算法。近年來,隨著計算機系統性能的不斷提高,不可逆加密的應用領 域正在逐漸增大。
而現階段為了實現數據加密,最簡單的方法是使用DES算法,如前所述, 該算法是一種對稱加密算法。圖l示出了使用該算法對原文進行加密的處理過 程,包括在步驟S101中,獲取原文,並接收用戶輸入的密碼;在步驟S102 中,通過DES算法,將前述密碼作為密鑰對原文進行加密。而在解密階段中, 直接使用DES算法,將用戶輸入的密碼作為密鑰對密文進行解密,計算生成原 文。該現有技術的特點是簡單,效率高,能夠保證一定的加密強度。但是利 用該現有4支術的方法時,所存儲數據的安全性較低,體現在以下兩個方面 (1)由於所有數據採用同一密鑰加密, 一旦密文被破譯,所有存儲的數據都 會洩密,可靠性難以得到保障;(2)由於該算法中密鑰本身的加密強度只有 56位,存在弱密鑰問題,如果客戶使用不當,會使加密強度大幅度降低。 因此需要一種新的數據加密及解密方法,從而提高存儲數據的安全性。
發明內容
本發明的目的之一在於提供一種數據加密及解密方法、系統及設備,旨 在解決現有技術中存儲數據的安全性較低的問題。
為了實現發明目的,所述數據加密及解密設備包括用於接收用戶輸入的 密碼的用戶接口單元,以及對原文和密文分別進行加密和解密的加解密單元, 所述設備還包括密鑰生成單元、數據處理單元;
所述密鑰生成單元與用戶接口單元、加解密單元及數據處理單元相連並
進行數據交互,用於針對待加密的原文生成隨機數,並基於所述密碼及隨機 數生成初級密鑰,以及從所述初級密鑰中提取出加密密鑰;
所述加解密單元與密鑰生成單元和數據處理單元相連並進行數據交互, 其進一步用於,在加密階段利用所述加密密鑰對原文進行加密,得到初級密
文,以及在解密階段利用所述初級密鑰對初級密文解密,得到原文;
所述數據處理單元與密鑰生成單元和加解密單元相連並進行數據交互, 用於在加密階段對初級密文與隨機數進行數據融合,得到最終密文,以及在 解密階段對最終密文進行數據分解,得到初級密文和隨機數。
優選地,所述設備還包括數據存儲單元,其與用戶接口單元和數據處理 單元相連並進行數據交互,用於存儲原文或最終密文,供用戶接口單元提取。
為了更好地實現發明目的,還提供了一種數據加密及解密系統,包括用 於接收用戶輸入的密碼的用戶接口單元,對原文或最終密文進行存儲的數據 存儲單元,以及對原文和密文分別進行加密和解密的加解密單元,所述系統 還包括密鑰生成單元、數據處理單元;
所述密鑰生成單元與用戶接口單元、加解密單元及數據處理單元相連並 進行數據交互,用於針對待加密的原文生成隨機數,並基於所述密碼及隨機 數生成初級密鑰,以及從所述初級密鑰中提取出加密密鑰;
所述加解密單元與密鑰生成單元和數據處理單元相連並進行數據交互, 其進一步用於,在加密階段利用所述加密密鑰對原文進行加密,得到初級密 文,以及在解密階^a利用所述初級密鑰對初級密文解密,得到原文;
所述數據處理單元與密鑰生成單元和加解密單元相連並進行數據交互, 用於在加密階段對初級密文與隨機數進行數據融合,得到最終密文,以及在 解密階段對最終密文進行數據分解,得到初級密文和隨機數。
優選地,所述密鑰生成單元包括隨機數生成模塊、密鑰計算模塊和密鑰 提取模塊;
所述隨機數生成模塊與密鑰計算模塊相連並進行數據交互,用於針對待 加密的原文生成隨4幾數;
所述密鑰計算模塊與隨機數生成模塊及密鑰提取模塊相連並進行數據交 互,用於根據所述密碼和隨機數生成初級密鑰;
所述密鑰提取模塊與密鑰計算模塊相連並進行數據交互,用於從所述初 級密鑰中提取出加密密鑰。
優選地,數據處理單元包括
數據融合模塊,用於對加密階段的初級密文與隨機數進行數據融合,得 到最終密文;
數據分解模塊,用於對解密階段的最終密文進行數據分解,得到初級密文和隨機數
優選地,所述數據處理單元還包括
校驗處理模塊,與數據融合模塊和數據分解模塊分別相連並進行數據交 互,用於在加密階段根據隨機數生成校驗碼,並將其送入數據融合模塊,以 及在解密階段根據校驗碼對解密結果進行驗證。
為了更好地實現發明目的,還提供了一種數據加密方法,所述方法包括 以下步驟
A. 接收用戶輸入的密碼,並針對待加密的原文生成隨機數;
B. 基於所述密碼及隨機數生成初級密鑰,並從所述初級密鑰中提取出加 密密鑰;
C. 利用加密密鑰對原文進行加密,得到初級密文;
D. 對初級密文與隨機數進行數據融合,得到最終密文。 優選地,所述步驟A包括
All.獲取原文,並接收用戶輸入的密碼;
Al2.針對待加密的原文,通過隨機數算法生成隨機數。
優選地,所述步驟B包括
B11 .利用散列算法,基於密碼及隨機數的結合數據生成初級密鑰; B12.提取所述初級密鑰的部分數據作為加密密鑰。 優選地,所述步驟C包括
通過對稱加密算法,利用所述加密密鑰對原文進行加密,得到初級密文。 優選地,所述步驟C之前還包括
採用校驗算法對原文進行校驗,獲取校驗碼,並將所述校驗碼作為前綴 與原文進行數據融合。
為了更好地實現發明目的,還提供了一種數據解密方法,包括以下步驟
A. 獲取待解密的最終密文和在加密階段中用戶輸入的密碼;
B. 根據所述密碼分解最終密文,得到隨機數及初級密文;
C. 基於所述密碼及隨機數生成初級密鑰;
D. 利用所述初級密鑰對初級密文解密,得到原文。
優選地,若步驟D得到的原文包含校驗碼,則所述步驟D之後進一步包括
E. 通過所述校驗碼驗證解密結果是否正確若是則保存解密結果,即原文。 本發明在對數據進行加密及解密的過程中,與現有技術的區別在於,針
對每一個待加密的原文,都生成一串隨機數,再基於密碼和隨機數生成初級
密鑰,並從初級密鑰中提耳又部分數據作為加密密鑰。該方法中每個原文的加
密密鑰都不同,因此避免了由於一個數據被破解導致的大面積洩密;而且由 於從初級密鑰中僅提取部分數據作為加密密鑰,因此即便能破解得到初級密鑰,也無法直接根據初級密鑰破解得到用戶輸入的密碼。由上可知,本發明 提高了所存儲數據的安全性。
圖l是現有技術中對數據進行加密的方法流程圖;圖2是本發明其中 一個實施例中數據加密及解密系統結構圖;圖3 A是圖2所示實施例中客戶端的設備結構圖;圖3B是圖2所示實施例中客戶端的另 一設備結構圖;圖4是本發明其中 一個實施例中數據加密及解密系統的結構圖;圖5是本發明其中 一個實施例中密鑰生成單元的結構圖;圖6是本發明其中 一個實施例中數據處理單元的結構圖;圖7是本發明其中 一個實施例中數據處理單元的結構圖;圖8是本發明其中 一個實施例中數據加密的方法流程圖;圖9是本發明其中 一個實施例中數據加密的方法流程圖;圖10是本發明其中 一個實施例中數據加密的方法流程圖;圖11是本發明其中 一 個實施例中數據解密的方法流程圖;圖12是本發明其中 一 個實施例中數據解密的方法流程圖;圖13是本發明其中 一 個實施例中數據解密的方法流程圖。
具體實施方式
為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及 實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施 例僅僅用以解釋本發明,並不用於限定本發明。本發明在對數據進行加密的過程中,針對每一個待加密的原文,都生成 一串隨機數,再基於密碼和隨機數生成初級密鑰,並從初級密鑰中提取部分 數據作為加密密鑰,然後利用加密密鑰對原文進行加密得到初級密文,最後 對初級密文與隨機數進行數據融合得到最終密文。在對數據進行解密的過程 中,首先根據用戶提供的密碼分解最終密文,得到隨機數及初級密文,然後 基於密碼及隨機數生成初級密鑰,最後利用初級密鑰對初級密文解密,得到 原文。本發明避免了數據的大面積洩密,且增加了加密強度,因此提高了所 存儲數據的安全性。圖2示出了本發明其中 一個實施例中數據加密及解密系統結構,該系統包 括客戶端100,及與其相連並進行數據交互的服務端200。應當說明的是,本 發明所有圖示中各設備之間的連接關係是為了清楚闡釋其信息交互及控制過 程的需要,因此應當視為邏輯上的連接關係,而不應僅限於物理連接。另外
需要說明的是,各功能模塊之間的通信方式可以採取多種,本發明的保護範 圍不應限定為某種特定類型的通信方式。
服務端200與客戶端100相連並進行數據交互,在本發明中該服務端200包 括網絡伺服器201和資料庫伺服器202,分別用於為用戶提供網頁服務,以及 存儲客戶端IOO發送的數據。客戶端IOO供用戶登錄,並根據用戶操作對數據進行加密或者解密處理, 以及與服務端200之間進行數據交互。需要說明的是,本發明中數據加密和解 密的所有操作可基於一個具有封閉式結構的設備來實現,如圖3所示的客戶端 100。在一個最簡的實施例中,客戶端100包括用戶接口單元101、加解密單元 103、密鑰生成單元102和數據處理單元104,其中
(1) 用戶接口單元101用於接收用戶輸入的密碼,以及獲取原文或最終密文。
(2) 密鑰生成單元102與用戶接口單元101、加解密單元103及數據處理 單元104相連並進行數據交互,用於針對待加密的原文生成隨機數,並基於密 碼及隨機數生成初級密鑰,以及從初級密鑰中提取出加密密鑰。關於該密鑰 生成單元102的具體內容,將在圖5中詳細闡述。
(3 )加解密單元103與密鑰生成單元102和數據處理單元104相連並進行 數據交互,其進一步用於,在加密階段利用加密密鑰對原文進行加密,得到 初級密文,以及在解密階段利用初級密鑰對初級密文解密,得到原文。
在本發明中,加解密單元103在對萄:據進行加密和解密的過程中所使用的 算法是相同的,均為對稱加密算法,包括前面提及的DES、 IDEA 、 AES等。 在一個實施例中,使用DES算法進行加密計算的具體過程是首先通過腳本語 言(JavaScript)實現加密函數,例如DES(key, data),其中參數data為待加密 數據,key為密鑰,DES算法本身是公開的,其公式可參考現有技術;然後傳 入上述參數並調用加密函數,返回內容即為加密的結果。在其他實施例中, 還可採用IDEA 、 AES等對稱加密算法,這兩種算法加密強度更高,但性能較 差,考慮在腳本環境中運行加密解密算法,性能會大打折扣,故本專利中DES 算法是一種較佳選擇。應當說明的是,本發明並不限定採用對稱加密算法, 其他可行的各種算法均包含在本發明的保護範圍之內。
(4)數據處理單元104與密鑰生成單元102和加解密單元103相連並進行 數據交互,用於在加密階段對初級密文與隨機數進行數據融合,得到最終密 文,以及在解密階段對最終密文進行數據分解,得到初級密文和隨機數。關 於該數據處理單元104的具體內容,將在圖6和圖7中詳細闡述。
而在一個較佳實施例中,該客戶端100還包括數據存儲單元105,其與用 戶接口單元101和數據處理單元104相連並進行數據交互,用於存儲原文或最
終密文,供用戶接口單元101提取。在此情形下,如果數據存儲單元105中已
文或i終密文;若數據存儲單元io5中沒有本;也存儲數據,則用二接口單kl01、 可通過接收外界設備發送的數據,從而獲取原文或最終密文。
應當說明的是,本發明除可基於上述封閉式的設備(客戶端IOO)來實現 數據的加密及解密,也可基於一個開放式的系統來實現,而其中僅部分操作 基於客戶端100完成。本發明基於此考慮,提出了圖4的實施例。
圖4示出了本發明其中一個實施例中數據加密及解密系統結構,包括用戶 接口單元IOI、加解密單元103、密鑰生成單元102、數據處理單元104和數據 存儲單元105,其中
(1) 用戶接口單元101用於接收用戶輸入的密碼,以及獲取原文或最終密文。
(2) 密鑰生成單元102與用戶4妄口單元101、加解密單元103及數據處理 單元104相連並進行數據交互,用於針對待加密的原文生成隨機數,並基於密 碼及隨機數生成初級密鑰,以及從初級密鑰中提取出加密密鑰。關於該密鑰 生成單元102的具體內容,將在圖5中詳細闡述。
(3) 加解密單元103與密鑰生成單元102和數據處理單元104相連並進行 數據交互,其進一步用於,在加密階段利用加密密鑰對原文進行加密,得到 初級密文,以及在解密階段利用初級密鑰對初級密文解密,得到原文。
在本發明中,加解密單元103在對數據進行加密和解密的過程中所使用的 算法是相同的,均為對稱加密算法,包括前面提及的DES、 IDEA 、 AES等。 具體內容與前述圖2及圖3中的內容一致,故此處不再贅述。
(4 )數據處理單元104與密鑰生成單元102和加解密單元103相連並進行 數據交互,用於在加密階段對初級密文與隨機數進行數據融合,得到最終密 文,以及在解密階段對最終密文進行數據分解,得到初級密文和隨機數。關 於該數據處理單元104的具體內容,將在圖6和圖7中詳細闡述。
(5 )數據存儲單元105與用戶接口單元101和數據處理單元104相連並進 行數據交互,用於存儲原文或最終密文,供用戶接口單元101提取。在此情形 下,如果數據存儲單元105中已存有原文時,用戶接口單元101可根據用戶操 作從數據存儲單元105中提取原文或最終密文;若數據存儲單元105中沒有本 地存儲數據,則用戶接口單元101可通過接收外界設備發送的數據,從而獲取 原文或最終密文。
圖5示出了本發明其中 一個實施例中密鑰生成單元102的結構,包括隨機 數生成模塊1021、密鑰計算模塊1022和密鑰提取模塊1023。其中
(1 )隨機數生成模塊與1021密鑰計算模塊1022相連並進行數據交互,用 於針對待加密的原文生成隨機數。在本發明中,隨機數可採取多種形式,包 括整數、浮點數等。在實際應用中,該隨機數最好是整數,當採用浮點數時, 在不同字長的計算機中表達結果可能會產生偏差。隨機數的生成可採用 一般 程式語言中的隨機數函數,只要結果數據具備隨機性即可,該隨機數函數包 括多種,例如JavaScript中的Math.random函數。
(2 )密鑰計算模塊1022與隨機數生成模塊及密鑰提取模塊相連並進行數 據交互,用於根據該密碼和隨機數生成初級密鑰。在本發明中,生成密鑰K的 算法須為不可逆的算法,而最簡單的就是採用已知的散列算法。例如,若原 文為T,用戶輸入的密碼為P,隨機數為S,則將P+S作為一個整體字符串,然 後利用散列算法針對整個字符串計算散列結果,也即初級密鑰K。由於每次加 密計算的隨機數S都不一樣,那麼該散列算法計算的結果也是不一樣的,由於 該算法本身不可逆,故每次K值都不一樣,從而無法用被破解的K去破解用戶 的其他數據,避免了數據的大面積洩密。而該散列算法可採用多種,例如MD5、 安全哈希算法(Secure Hash Algorithm, SHA)等。這些算法都比較類似,只 是發現碰撞值的難度不同,MD5相對來說運算性能更好。
在一個具體實施例中,密鑰計算模塊1022採用MD5算法生成初級密鑰。 具體過程是首先通過腳本語言(JavaScript)實現MD5函數,例如MD5(data), 對data執行散列運算,返回值為算列結果;然後傳入P+S的整體字符串並調用 MD5函數,返回散列值K即為初級密鑰。
(3)密鑰提取模塊1023與密鑰計算模塊1022相連並進行數據交互,用於 從所述初級密鑰中提取出加密密鑰,用於加解密單元103對數據進行加密。
在一個實施例中,若密鑰計算模塊1022生成初級密鑰K時採用的算法是 MD5算法,加解密單元103對數據進行加密時採用的算法是DES算法,由於 MD5算法得到的K的長度是16位元組,而DES算法需要的密鑰長度是8位元組,故 可取初級密鑰K的一部分作為最終密鑰。在本發明中,密鑰提取模塊1023可根 據各種不同的原則從初級密鑰中提取加密密鑰,只要保證所提取出的數據符 合後續加密算法的位數要求即可。這種採用部分散列結果作為對稱加密算法 的最終密鑰的方式,保證了散列算法不可逆,因此無法直接依據初級密鑰K破 解得到用戶輸入的密碼P,保證了加密強度。
圖6示出了本發明其中 一個實施例中數據處理單元104的結構,包括數據 融合模塊1041和數據分解模塊1042 。其中
(1 )數據融合模塊1041,用於對加密階段的初級密文與隨機數進行數據 融合,得到最終密文。例如,用戶輸入的密碼是P,得到的隨機數為S,初級
密鑰為K,提取出的加密密鑰為K,,加密後的初級密文為E,那麼數據融合模 塊1041則將初級密文為E與隨機數S進行數據融合,得到最終密文R。本發明中 數據融合的方式有多種,在一個實施例中,數據融合模塊1041是將隨機數S作 為前綴與初級密文E進行融合。當然,本發明的保護範圍並不限定於此種方式。 (2)數據分解模塊1042,用於對解密階段的最終密文進行數據分解,得 到初級密文和隨機數。基於前述示例,在解密過程中,數據分解模塊1042根 據用戶提供的密碼P分解最終密文R,得到隨機數S及初級密文E的結合數據, 並進一步對隨機數S和初級密文E的結合數據進行分解,得到獨立的隨機數S 和初級密文E。
圖7示出了本發明其中 一個實施例中數據處理單元104的結構,其除了包 括數據融合模塊1041和數據分解模塊1042外,還包括校驗處理模塊1043。其 中
校驗處理模塊1043與數據融合模塊和數據分解模塊分別相連並進行數據 交互,用於在加密階段根據隨機數生成校驗碼,並將其送入數據融合模塊, 以及在解密階段根據校驗碼對解密結果進行驗證。具體包括(1 )在加密階 段,校驗處理模塊1043可採用多種算法生成校驗碼。在一個實施例中,校驗 處理模塊1043使用循環冗餘校驗(Cyclic Redundancy Check, CRC )算法對原 文T進行數據處理,獲取校驗碼C,即C=CRC(T), C將在解密時用於核對解 密結果是否正確。當然,本發明並不限定於該算法,其他類似的算法也包含 在本發明的保護範圍之內。(2)在解密階段,校驗處理模塊1043也可採用多 種算法驗證校驗碼的準確性。在一個實施例中,校驗處理模塊1043使用CRC 算法基於解碼結果中的原文T進行數據處理,獲取一個新的校驗碼C,,即 C,=CRC(T);然後將C與C,進行對比,如果〔=C,,證明解密結果是正確的, 否則就是錯誤的。對校驗碼進行驗證的目的就是,當密碼錯誤時,可以避免 輸出錯誤的亂碼。
由於本實施例相比於圖6所示實施例,在數據處理單元104中增加了一個 校驗處理模塊1043,基於原文T生成了校驗碼C,因此數據融合模塊1041在加 密階段將校驗碼C與原文T進行數據融合,並將C+T的整體數據送入加解密單 元103。在一個實施例中,數據融合模塊1041將校驗碼C作為前綴與原文T進行 數據融合。在該情形下,加解密單元103則採用對稱加密算法(例如DES、 IDEA 、 AES等),並利用加密密鑰K,對C+T的整體數據進行加密。在採用DES 算法的情形下,即E=DES (K,, C+T)。
另外,數據分解模塊1042也有所不同。在解密階段,根據初級密鑰K通過 對稱加密算法對初級密文E進行解密,得到校驗碼C與原文T的結合數據,此時
數據分解才莫塊1042則對校—瞼碼C與原文T的結合lt據進4於分解,得到獨立的校 驗碼C和原文T,然後再將校驗碼C輸入校驗處理模塊1043進行驗證。
圖8示出了本發明其中一個實施例中數據加密的方法流程,該方法流程基 於圖2、圖3A、圖3B的系統結構,或者基於圖4所示的系統結構,具體包括以 下步驟
在步驟S801中,用戶接口單元101獲取待加密的原文,並接收用戶輸入的密碼。
在步驟S802中,密鑰生成單元102針對待加密的原文生成隨機數,並進一 步基於密碼及隨機數生成初級密鑰,然後從初級密鑰中提取出加密密鑰,並 將該加密密鑰送入加解密單元103中。
在步驟S803中,加解密單元103利用加密密鑰對原文進行加密,得到初級密文。
在步驟S804中,數據處理單元104對初級密文與隨扭i數進行數據融合,得 到最終密文。之所以要將初級密文與隨機數進行數據融合,是為了順利解密 的需要。
圖9示出了本發明其中一個實施例中數據加密的方法流程,具體包括
在步驟S901中,用戶接口單元101獲取待加密的原文,並接收用戶輸入的 密碼。在本發明中,用戶接口單元101可通過多種方式獲取原文,若數據存儲 單元105中存有原文,則從該數據存儲單元105中提取即可;若數據存儲單元 105中沒有存儲原文,則需從外界其他設備導入。
在步驟S902中,密鑰生成單元102調用其隨機數生成模塊1021針對待加密 的原文生成隨機數,採用的算法是隨機數算法。在本發明中,隨機數可採取 多種形式,包括整數、浮點數等。在實際應用中,該隨機數最好是整數,當 採用浮點數時,在不同字長的計算機中表達結果可能會產生偏差。隨機數的 生成可採用一般程式語言中的隨機數函數,只要結果數據具備隨機性即可, 該隨才幾數函悽t包括多種,例如JavaScript中的Math.random函數。
在步驟S903中,密鑰生成單元102調用其密鑰計算模塊1022基於密碼及隨 機數,生成初級密鑰。在本發明中,生成初級密鑰K的算法須為不可逆的算法, 而最簡單的就是採用已知的散列算法。例如,若原文為T,用戶輸入的密碼為 P,隨機數為S,則將P+S作為一個整體字符串,然後利用散列算法針對整個字 符串計算散列結果,也即初級密鑰K。由於每次加密計算的隨機數S都不一樣, 那麼該散列算法計算的結果也是不一樣的,由於該算法本身不可逆,故每次K 值都不一樣,從而無法用被破解的K去破解用戶的其他數據,避免了數據的大
面積洩密。而該散列算法可採用多種,例如MD5 、安全哈希算法(Secure Hash Algorithm, SHA)等。這些算法都比較類似,只是發現碰撞值的難度不同, MD5相對來說運算性能更好。
在一個具體實施例中,密鑰計算模塊1022採用MD5算法生成初級密鑰。 具體過程是首先通過腳本語言(JavaScript)實現MD5函數,例如MD5(data), 對data執行散列運算,返回值為算列結果;然後傳入P+S的整體字符串並調用 MD5函數,返回散列值K即為初級密鑰。
在步驟S904中,密鑰生成單元102調用其密鑰提取模塊1023提取初級密鑰 的部分數據作為加密密鑰。
在一個實施例中,若密鑰計算模塊1022生成初級密鑰K時採用的算法是 MD5算法,加解密單元103對數據進行加密時採用的算法是DES算法,由於 MD5算法得到的K的長度是16位元組,而DES算法需要的密鑰長度是8位元組,故 可取初級密鑰K的一部分作為最終密鑰。在本發明中,密鑰提取模塊1023可根 據各種不同的原則從初級密鑰中提取加密密鑰,只要保證所提取出的數據符 合後續加密算法的位數要求即可。這種採用部分散列結果作為對稱加密算法 的最終密鑰的方式,保證了散列算法不可逆,因此無法直接依據初級密鑰K破 解得到用戶輸入的密碼P,保證了加密強度。
在步驟S905中,加解密單元103通過對稱加密算法,利用加密密鑰對原文 進行加密得到初級密文,並將其輸入悽t據處理單元104中。在本發明中,加解 密單元103在對數據進行加密和解密的過程中所使用的算法是相同的,均為對 稱加密算法,包括前面提及的DES、 IDEA 、 AES等。在一個實施例中,使用 DES算法進行加密計算的具體過程是首先通過腳本語言(JavaScript)實現 加密函數,例如DES(key, data),其中參數data為待加密數據,key為密鑰, DES算法本身是公開的,其公式可參考現有技術;然後傳入上述參數並調用加 密函數,返回內容即為加密的結果。在其他實施例中,還可採用IDEA 、 AES 等對稱加密算法,這兩種算法加密強度更高,但性能較差,考慮到在腳本環 境中運行加密解密算法,性能會大打折扣,故本專利中DES算法是一種較佳選 擇。應當說明的是,本發明並不限定採用對稱加密算法,其他可行的各種算 法均包含在本發明的保護範圍之內。
在步驟S906中,數據處理單元104接收到初級密文後,將隨機數作為前綴 與初級密文結合,生成最終密文,並將其送入數據存儲單元105。
例如,用戶輸入的密碼是P,得到的隨機數為S,初級密鑰為K,提取出的 加密密鑰為K,,加密後的初級密文為E,那麼數據融合;f莫塊1041則將初級密文 為E與隨機數S進行數據融合,得到最終密文R。本發明中數據融合的方式有多 種,在一個實施例中,數據融合模塊1041是將隨機數S作為前綴與初級密文E進行融合。當然,本發明的保護範圍並不限定於此種方式。
在步驟S907中,數據存儲單元105保存加密結果,即最終密文。在本發明 中,數據存儲單元105可通過多種存儲形式來保存該最終密文,例如數據表、 文本文件等,具體可參考現有技術,此處不再贅述。
圖10示出了本發明其中 一個實施例中數據加密的方法流程,具體包括
在步驟S1001中,用戶接口單元101獲取待加密的原文,並接收用戶輸入 的密碼。在本發明中,用戶接口單元101可通過多種方式獲取原文,若數據存 儲單元105中存有原文,則從該數據存儲單元105中提取即可;若數據存儲單 元105中沒有存儲原文,則需從外界其他設備導入。該步驟S1001的具體實現 過程與前述圖9中的步驟S901—致,故此處不再贅述。
在步驟S1002中,密鑰生成單元102調用其隨機數生成模塊1021針對待加 密的原文生成隨機數,採用的算法是隨機數算法。關於該隨機數及隨機數算 法,具體內容與前述圖9中的步驟S902—致,故此處不再贅述。
在步驟S1003中,在步驟S903中,密鑰生成單元102調用其密鑰計算模塊 1022基於密碼及隨機數,生成初級密鑰。在本發明中,生成初級密鑰K的算法 須為不可逆的算法,而最簡單的就是採用已知的散列算法。關於該散列算法, 具體內容與前述圖9中的步驟S903—致,故此處不再贅述。
在步驟S1004中,密鑰生成單元102調用其密鑰提取模塊1023提取初級密 鑰的部分數據作為加密密鑰。關於提取的具體過程,與前述圖9中的步驟S904 一致,故此處不再贅述。
在步驟S1005中,數據處理單元104調用其校驗處理模塊1043,採用校驗 算法對原文進行校驗,獲取校驗碼。應當說明的是,該步驟S1005可與前述步 驟S騰2、 S賺3、 S1004同步進行,也可順序執行。
在上述步驟S1005中,校驗處理模塊1043可採用多種算法生成校驗碼。在 一個實施例中,校驗處理模塊1043使用循環冗餘校驗(Cyclic Redundancy Check, CRC)算法對原文T進行數據處理,獲取校驗碼C,即C=CRC(T), C將在解密時用於核對解密結果是否正確。當然,本發明並不限定於該算法, 其他類似的算法也包含在本發明的保護範圍之內。
在步驟S1006中,數據處理單元104進一步調用其數據融合模塊1041將校 驗碼作為前綴與原文進行數據融合。由於本實施例相比於圖9所示實施例,基 於原文T生成了校驗碼C ,因此數據融合模塊1041在加密階段將校驗碼C與原 文T進行數據融合,並將C+T的整體數據送入加解密單元103。在一個實施例 中,數據融合模塊1041將校驗碼C作為前綴與原文T進行數據融合。
在步驟S1007中,加解密單元103通過對稱加密算法,利用加密密鑰對原
文及4交-瞼碼的結合數據進行加密,得到初級密文,並將其輸入數據處理單元
104中。
在本發明中,加解密單元103在對數據進行加密和解密的過程中所使用的 算法是相同的,均為對稱加密算法,包括前面提及的DES、 IDEA 、 AES等。 關於該對稱加密算法,具體內容與圖9中的步驟S905—致。但是由於相比於圖 9的實施例,本實施例基於原文T生成了校驗碼C,並將兩者進行了數據融合處 理,因此在該情形下,加解密單元103利用加密密鑰K,對C+T的整體數據進行 加密。在採用DES算法的情形下,即E=DES (K,, C+T)。
在步驟S1008中,數據處理單元104接收到初級密文後,將隨機數作為前 綴與初級密文結合,生成最終密文。此步驟的具體實現過程與前述實施例中 的步驟S906—致,故此處不再贅述。
在步驟S1009中,數據存儲單元105保存加密結果,即最終密文。在本發 明中,數據存儲單元105可通過多種存儲形式來保存該最終密文,例如數據表、 文本文件等,具體可參考現有技術,此處不再贅述。
圖11示出了本發明其中 一 個實施例中數據解密的方法流程,本發明的數 據解密過程與前述的加密過程是對應的,該數據解密過程具體包括
在步驟S1101中,用戶接口單元101獲取待解密的最終密文,以及在加密 階段中用戶輸入的密碼。
在步驟S1102中,數據處理單元104根據用戶提供的密碼分解最終密文, 得到隨機數及初級密文。
在步驟S1103中,密鑰生成單元102基於密碼及隨機數生成初級密鑰。
在步驟S1104中,加解密單元103利用初級密鑰對初級密文解密,得到原文。
圖12示出了本發明其中 一 個實施例中數據解密的方法流程,具體包括
在步驟S1201中,用戶接口單元101獲取待解密的最終密文和在加密階段 中用戶輸入的密碼。在本發明中,用戶接口單元101可通過多種方式獲取最終 密文,若數據存儲單元105中存有最終密文,則從該數據存儲單元105中提取 即可;若數據存儲單元105中沒有存儲最終密文,則需從外界其他設備導入。 在本實施例中,獲得的最終密文為R,用戶輸入的密碼為P。
在步驟S1202中,數據處理單元104分解最終密文,得到隨機數及初級密 文的結合數據。在本實施例中,數據處理單元104調用其數據分解模塊1042根 據用戶提供的密碼P分解最終密文R,得到隨機數S及初級密文E的結合數據。
在步驟S1203中,數據處理單元104進一步對隨機數和初級密文的結合數據進4亍分解,得到獨立的隨積4t和初級密文。在本實施例中,H據分解才莫塊
1042進一 步對隨機數S和初級密文E的結合數據進行分解,得到獨立的隨機數S 和初級密文E。具體的分解過程可參考現有技術。
在步驟S1204中,密鑰生成單元102基於密碼及隨機數,生成初級密鑰。 在本發明中,生成初級密鑰K的算法須為不可逆的算法,而最簡單的就是採用 已知的散列算法。例如,若用戶輸入的密碼為P,隨機數為S,則將P+S作為一 個整體字符串,然後利用散列算法針對整個字符串計算散列結果,也即初級 密鑰K。由於每次加密計算的隨機數S都不一樣,那麼該散列算法計算的結果 也是不一樣的,由於該算法本身不可逆,故每次K值都不一樣,從而無法用被 破解的K去破解用戶的其他數據,避免了數據的大面積洩密。而該散列算法可 採用多種,例如MD5、安全哈希算法(Secure Hash Algorithm, SHA)等。這 些算法都比較類似,只是發現碰撞值的難度不同,MD5相對來說運算性能更 好。
在一個具體實施例中,密鑰生成單元102調用密鑰計算模塊1022,採用 MD5算法生成初級密鑰。具體過程是首先通過腳本語言(JavaScript)實現 MD5函數,例如MD5(data),對data執行散列運算,返回值為算列結果;然後 傳入P+S的整體字符串並調用MD5函數,返回散列值K即為初級密鑰。
在步驟S1205中,加解密單元103根據初級密鑰,通過對稱加密算法對初 級密文進行解密,得到原文,並將其送入數據存儲單元105。此處解密時使用 的對稱加密算法,與前述圖8、圖9、圖10中加密時使用的對稱加密算法是一 致的,包括DES、 IDEA 、 AES等,此處不再贅述。在本實施例中,加解密單 元103根據初級密鑰K,通過上述對稱加密算法對初級密文E進行解密,得到原 文T。若採用的是DES算法,則為T=DES (K, E)。
在步驟S1206中,數據存儲單元105保存解密結果,即原文。
圖13示出了本發明其中 一個實施例中數據解密的方法流程,具體包括
在步驟S1301中,用戶接口單元101獲取待解密的最終密文和在加密階段 中用戶輸入的密碼。在本實施例中,獲得的最終密文為R,用戶輸入的密碼為 P。此步驟的具體內容與前述圖12的步驟S1201—致,此處不再贅述。
在步驟S1302中,數據處理單元104分解最終密文,得到隨機數及初級密 文的結合數據。在本實施例中,數據分解模塊1042根據用戶提供的密碼P分解 最終密文R,得到隨機數S及初級密文E的結合數據。此步驟的具體內容與前述 圖12的步驟S1202—致,此處不再贅述。
在步驟S1303中,數據處理單元104進一步對隨機數和初級密文的結合數 據進行分解,得到獨立的隨機數和初級密文。在本實施例中,數據分解模塊
1042進一步對隨機數S和初級密文E的結合數據進行分解,得到獨立的隨機數S 和初級密文E。具體的分解過程可參考現有技術。此步驟的具體內容與前述圖 12的步驟S1203—致,此處不再贅述。
在步驟S1304中,密鑰生成單元102基於密碼及隨機數,生成初級密鑰。 在本發明中,生成初級密鑰K的算法須為不可逆的算法,而最簡單的就是採用 已知的散列算法。此步驟的具體內容與前述圖12的步驟S1203—致,此處不再 贅述。
在步驟S1305中,加解密單元103才艮據初級密鑰,通過對稱加密算法對初 級密文進行解密,然後將解密結果送入數據處理單元104。此處解密時使用的 對稱加密算法,與前述圖8、圖9、圖10中加密時使用的對稱加密算法是一致 的,包括DES、 IDEA 、 AES等,此處不再贅述。
在步驟S1306中,數據處理單元104接收到解密結果後,對該解密結果進 行分析,判斷其是否為校驗碼與原文的結合數據若是,則執行步驟S1307; 若否,則執行步驟S1309。
在步驟S1307中,數據處理單元104調用其數據分解模塊1042,對校驗碼 與原文的結合數據進行分解,得到獨立的校驗碼和原文。在本實施例中,若 解密結果是校驗碼與原文的結合數據,數據分解模塊1042則對校驗碼C與原文 T的結合數據進行分解,得到獨立的校驗碼C和原文T,然後再將校驗碼C輸入 校驗處理模塊1043。
在步驟S1308中,校驗處理模塊1043通過對校驗碼進行驗證,判斷前述步 驟的解碼結果是否正確若正確,則執行步驟S1309;若不正確,則結束。
在解密階段,校驗處理模塊1043也可採用多種算法驗證校驗碼的準確性。 在一個實施例中,校驗處理模塊1043使用CRC算法基於解碼結果中的原文T進 行數據處理,獲取一個新的校驗碼C,,即C,=CRC(T);然後將C與C,進行對 比,如果C二C,,證明解密結果是正確的,否則就是錯誤的。對校驗碼進行驗 證的目的就是,當密碼錯誤時,可以避免輸出錯誤的亂碼。
在步驟S1309中,數據存儲單元105保存解密結果,即原文T。
綜上所述,本發明提供的加密及解密方法中,每個原文的加密密鑰都不 同,因此避免了由於一個數據被破解導致的大面積洩密;而且由於從初級密 鑰中僅提取部分數據作為加密密鑰,因此即便能破解得到初級密鑰,也無法 直接根據初級密鑰破解得到用戶輸入的密碼。由上可知,本發明提高了所存 儲數據的安全性。
以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本 發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本 發明的保護範圍之內。
權利要求
1、一種數據加密及解密設備,包括用於接收用戶輸入的密碼的用戶接口單元,對原文進行加密和對密文進行解密的加解密單元,其特徵在於,所述設備還包括密鑰生成單元,與用戶接口單元、加解密單元及數據處理單元分別相連並進行數據交互,用於針對待加密的原文生成隨機數,並基於所述隨機數及用戶輸入的密碼生成初級密鑰,以及從所述初級密鑰中提取出加密密鑰;數據處理單元,與密鑰生成單元和加解密單元相連並進行數據交互,用於在加密階段接收加解密單元對原文進行加密得到的初級密文,並對初級密文與隨機數進行數據融合,得到最終密文,以及在解密階段對最終密文進行數據分解,得到初級密文和隨機數,並將初級密文輸入加解密單元從而對初級密文解密得到原文。
2、 根據權利要求l所述的數據加密及解密設備,其特徵在於,所述設備 還包括數據存儲單元,其與用戶接口單元和數據處理單元分別相連並進行數 據交互,用於存儲所述原文或最終密文,供用戶接口單元提取。
3、 一種數據加密及解密系統,包括用於接收用戶輸入的密碼的用戶接口 單元,對數據進行存儲的數據存儲單元,以及對原文進行加密和對密文進行 解密的加解密單元,其特徵在於,所述系統還包括密鑰生成單元,與用戶接口單元、加解密單元及數據處理單元分別相連 並進行數據交互,用於針對待加密的原文生成隨機數,並基於所述隨機數及 用戶輸入的密碼生成初級密鑰,以及從所述初級密鑰中提取出加密密鑰;.數據處理單元,與密鑰生成單元、加解密單元及數據存儲單元分別相連 並進行數據交互,用於在加密階段接收加解密單元對原文進行加密得到的初 級密文,並對初級密文與隨機數進行數據融合,得到最終密文,以及在解密 階段對最終密文進行數據分解,得到初級密文和隨機數,並將初級密文輸入 加解密單元從而對初級密文解密得到原文。
4、 根據權利要求3所述的數據加密及解密系統,其特徵在於,所述密鑰 生成單元包括隨機數生成模塊、密鑰計算模塊和密鑰提取模塊;所述隨機數生成模塊與密鑰計算模塊相連並進行數據交互,用於針對待 加密的原文生成隨機數;所述密鑰計算模塊與隨機數生成模塊及密鑰提取模塊相連並進行數據交 互,用於根據所述密碼和隨機數生成初級密鑰; 所述密鑰提取才莫塊與密鑰計算模塊相連並進行數據交互,用於從所述初 級密鑰中提取出加密密鑰。
5、 根據權利要求3或4所述的數據加密及解密系統,其特徵在於,數據處 理單元包括數據融合模塊,用於對加密階段的初級密文與隨機數進行數據融合,得 到最終密文;數據分解模塊,用於對解密階段的最終密文進行數據分解,得到初級密 文和隨糹幾悽t。
6、 根據權利要求5所述的數據加密及解密系統,其特徵在於,所述數據 處理單元還包括校驗處理模塊,與數據融合模塊和數據分解模塊分別相連並進行數據交 互,用於在加密階段根據隨機數生成校驗碼,並將其送入數據融合模塊,以 及在解密階段根據校驗碼對解密結果進行驗證。
7、 一種數據加密方法,其特徵在於,所述方法包括以下步驟A. 獲取待加密的原文,並接收用戶輸入的密碼;B. 針對所述原文生成隨機數,並基於所述密碼及隨機數生成初級密鑰, 以及從所述初級密鑰中提取出加密密鑰;C. 利用加密密鑰對原文進行加密,得到初級密文;D. 對初級密文與隨機數進行數據融合,得到最終密文。
8、 根據權利要求7所述的數據加密方法,其特徵在於,所述步驟B包括 B11 .針對所述待加密的原文,通過隨機數算法生成隨機數;B12.利用散列算法,基於密碼及隨機數的結合數據生成初級密鑰; B13.提取所述初級密鑰的部分數據作為加密密鑰。
9、 根據權利要求7或8所述的數據加密方法,其特徵在於,所述步驟C包括通過對稱加密算法,利用所述加密密鑰對原文進行加密,得到初級密文。
10、 根據權利要求9所述的數據加密方法,其特徵在於,所述步驟C之前 還包括採用校驗算法對原文進行校驗,獲取校驗碼,並將所述校驗碼作為前綴與原文進行數據融合。
11、 一種數據解密方法,其特徵在於,所述方法包括以下步驟:A. 獲取待解密的最終密文和在加密階4殳中用戶輸入的密碼;B. 根據所述密碼分解最終密文,得到隨機數及初級密文;C. 基於所述密碼及隨機數生成初級密鑰;D. 利用所述初級密鑰對初級密文解密,得到原文。
12、根據權利要求ll所述的數據解密方法,其特徵在於,若步驟D得到的 原文包含校驗碼,則所述步驟D之後進一步包括以下步驟E.通過所述校驗碼驗證解密結果是否正確若是則保存解密結果,即原文。
全文摘要
本發明涉及信息安全領域,提供了一種數據加密及解密方法、系統及設備。所述數據加密方法包括以下步驟A.獲取待加密的原文,並接收用戶輸入的密碼;B.針對所述原文生成隨機數,並基於所述密碼及隨機數生成初級密鑰,以及從所述初級密鑰中提取出加密密鑰;C.利用加密密鑰對原文進行加密,得到初級密文;D.對初級密文與隨機數進行數據融合,得到最終密文。此外,本發明還提供了一種數據加密及解密系統、一種數據加密及解密設備和一種數據解密方法,從而提高了存儲數據的安全性。
文檔編號H04L9/14GK101340279SQ20081013280
公開日2009年1月7日 申請日期2008年7月9日 優先權日2008年7月9日
發明者雷中南 申請人:深圳市金蝶移動互聯技術有限公司