一種計算機數據的保護方法及裝置的制造方法
【技術領域】
[0001] 本發明涉及計算機數據的處理技術,特別涉及一種計算機數據的保護方法及裝 置。
【背景技術】
[0002] 在對計算機軟件保護技術中,除非采用專用的加密算法,否則計算機內存和寄存 器中難免出現軟件的明文數據。在計算機中,即使采用設定的加密算法將數據加密后存儲, 當計算機對所存儲的加密數據之間進行運算時,也需要采用加密算法對應的解密算法,對 所存儲的加密數據解密后再處理,故而在計算機處理的過程中,會出現明文數據,從而無法 保證軟件數據的安全性。
[0003] 通常,軟件破解者通過跟蹤和對比計算機處理過程中出現的明文數據,就能夠分 析得到加密算法,對所存儲的加密的軟件數據進行解密。因此,如何保證計算機數據的安全 性成為了一個亟待解決的問題。
【發明內容】
[0004] 有鑒于此,本發明實施例提供一種計算機數據的保護方法,該方法在計算機處理 計算機數據時,保證計算機數據的安全性。
[0005] 本發明實施例還提供一種計算機數據的保護裝置,該裝置在計算機處理計算機數 據時,保證計算機數據的安全性。
[0006] 根據上述目的,本發明是這樣實現的:
[0007] -種計算機數據的保護方法,該方法應用在計算機運算過程中,該方法包括:
[0008] 從存儲的多個非二進制的源操作數中,每個源操作數依次選取一位數字,采用真 實計算機運算指令對所述選取的數字進行當前位運算,進行進位或/和借位,直到所述多 個源操作數的數字分別都被選取完,得到目的操作數。
[0009] -種計算機數據的保護裝置,包括:操作數存儲單元、虛擬指令存儲單元及運算單 元,其中,
[0010] 操作數存儲單元,用于存儲指令的非二進制的源操作數或目標操作數;
[0011] 虛擬指令存儲單元,用于存儲虛擬指令,包括多進制數加法指令、多進制數減法指 令、多進制數乘法指令、多進制數除法指令、多進制數比較指令、或/和多進制數基數轉換 指令;
[0012] 運算單元,用于根據指令類型對相應的源操作數進行運算,包括從每個源操作數 依次選取一位數字,采用真實計算機運算指令對所述選取的數字進行當前位運算,運算過 程包括進位或/和借位,直到所述多個源操作數的數字分別都被選取,得到目的操作數。
[0013] 由上述方案可以看出,本發明實施例中的源操作數以非二進制形式存儲,從每個 源操作數依次選取一位數字,采用真實計算機運算指令對所述選取的數字進行當前位運 算,并進行進位或/和借位,直到所述多個源操作數的數字分別都被選取,得到目的操作 數。由于本發明實施例在計算機處理計算機數據時,數字一直保持為非二進制狀態,尤其是 存儲器,該存儲器包括內存和寄存器中不出現二進制數,同時數字的基數,也就是進制數是 可變的,因此不容易被破解,保證了計算機數據的安全性。
【附圖說明】
[0014]圖1為本發明實施例提供的計算機數據的保護方法流程圖;
[0015]圖2為本發明實施例提供的計算機數據的保護裝置結構示意圖。
【具體實施方式】
[0016] 為使本發明的目的、技術方案及優點更加清楚明白,以下參照附圖并舉實施例,對 本發明作進一步詳細說明。
[0017] 在計算機中,為了保證所處理的計算機數據的安全性,且不容易被破解,本發明實 施例中的源操作數以非二進制形式存儲,從每個源操作數依次選取一位數字,采用真實計 算機運算指令對所述選取的數字進行當前位運算,并進行進位或/和借位,直到所述多個 源操作數的數字分別都被選取,得到目的操作數。由于本發明實施例在計算機處理計算機 數據時,數字一直保持為非二進制狀態,尤其是存儲器,該存儲器包括內存和寄存器中不出 現二進制數,同時數字的基數,也就是進制數是可變的,因此不容易被破解,保證了計算機 數據的安全性。
[0018] 在本發明實施例中,所述多進制數為非二進制數;本發明實施例中將N進制數統 稱為"基數為N的多進制數"。每個多進制數存儲在若干連續的存儲單元,稱其為基本存儲 單元;每個基本單元存儲一位數字。多進制數還設置存儲單元存儲基數,用來標明該數是多 少進制。虛擬指令以基本存儲單元為單位對數字進行計算,當計算結果大于基數時,對高位 產生進位;當計算會產生向下溢出時對高位產生借位;例如加法運算結果大于基數,則對 高位進位,而減法運算的被減數小于減數時應向高位借位;順序地對各基本存儲單元循環 計算時,每一位的計算根據指令的要求考慮上一次循環的進位或借位。
[0019]圖1為本發明實施例提供的計算機數據的保護方法流程圖,其具體步驟為:
[0020] 步驟101、從存儲的多個非二進制的源操作數中,每個源操作數中依次選取一位數 字;
[0021] 步驟102、采用真實計算機運算指令對所述選取的數字進行當前位運算;
[0022] 在進行當前位計算過程中,有時會涉及上一次運算產生的進位/借位;
[0023] 步驟103、進行進位/借位運算;
[0024] 步驟104、判斷是否所有位是否選取運算完畢,是則結束,否則轉到步驟101。
[0025] 在本發明實施例中,設置多進制操作基數時,還包括設置以下參數:基本存儲單元 大小、基本存儲單元個數及源數據的多進制標志。更進一步地,還可以包括設置以下參數: 源操作數的正負數標識、源操作數的整數/浮點數標識。
[0026] 在本發明實施例中,所設置的基本存儲單元順序存儲每個操作數的每一位數字, 基本存儲單元的個數就是操作數的數字位數,M位N進制的操作數的第n位的權值為Nn。
[0027] 源操作數所采用的操作基數不同時,將多個源操作數分別轉換為基于相同操作基 數的操作數,將操作數視為源操作數進行運算;
[0028] 在本發明實施例中,基本存儲單元大小決定了操作數的基數上限,n字節大小的基 本數據存儲單元的存儲操作數的基數上限為2Wn-l。優選地,基本存儲單元的大小應該小于 或等于計算機的字長,如64位計算機的基本存儲單元的大小設置為小于或等于8字節,而 32位計算機的基本存儲單元的大小設置為小于或等于4字節。為了節約計算機的存儲資源 并提高計算效率,可以將基本存儲單元的大小設置為1字節。
[0029] 在本發明實施例中,運算以基本存儲單元為單位對操作數進行處理,當處理結果 大于所設置的多進制操作基數時,對高位產生進位;當處理結果對于所設置的多進制操作 基數溢出時對高位產生借位。例如,當兩個源操作數所選取的數字采用加法計算,運算結果 大于所設置的多進制操作基數時,則對基本存儲單元中已經存儲的高位目的數字進位,而 當兩個源操作數所選取的數字采用減法計算時,運算結果被減數小于減數時,則對基本存 儲單元中已經存儲的高位目的數字借位。順序地對操作數進行選取和計算時,當前基本存 儲單元的的計算要考慮上一個基本存儲單元運算時所產生的進位或借位。
[0030] 在本發明實施例中,當對多個源操作數進行轉換時,如果所采用的多進制操作基 數不同,則可以先將較小的多進制操作基數轉換為最大的多進制操作基數。
[0031 ] 在本發明實施例中,運算指令為加法指令、乘法指令、減法指令、乘法指令、除法指 令、比較指令、進制轉換指令。
[0032] 在步驟101中,加法和減法選取數字的順序為從低位到高位,每次從兩個源操作 數各選一位。
[0033] 在步驟101中,乘法選取數字的順序為第一操作數從低位到高位,每次選一位;對 第一操作數選取的每一位操作數,依