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