一種數(shù)據(jù)處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法及裝置。
【背景技術(shù)】
[0002]隨著手機(jī)的飛速發(fā)展,手機(jī)應(yīng)用程序得到廣泛的普及和應(yīng)用。普通應(yīng)用程序,包括單機(jī)游戲,均可以通過直接修改內(nèi)存數(shù)據(jù)的形式來對(duì)數(shù)值進(jìn)行修改,如單機(jī)游戲中的金錢數(shù)量、生命值等。而對(duì)數(shù)值不合理的修改,會(huì)大大縮短一款應(yīng)用程序的壽命,從而導(dǎo)致營收的減少。
[0003]現(xiàn)有技術(shù)中,為了防止內(nèi)存數(shù)據(jù)被修改,僅采用對(duì)指定數(shù)值進(jìn)行加密的方法來實(shí)現(xiàn)。在寫入指定變量的數(shù)值時(shí),將數(shù)值通過指定算法運(yùn)算后再進(jìn)行存儲(chǔ),在讀取指定變量的數(shù)值時(shí),將存儲(chǔ)的數(shù)值進(jìn)行相應(yīng)的逆運(yùn)算后再讀取。但是,這種方法對(duì)每個(gè)加密的指定數(shù)據(jù)都需要增加代碼進(jìn)行處理,處理后也不容易修改代碼的邏輯。而且,指定數(shù)值的存儲(chǔ)位置可以通過低階分析來獲得,同樣可以達(dá)到修改數(shù)值的目的。
[0004]現(xiàn)有技術(shù)還可以通過網(wǎng)絡(luò)傳輸關(guān)鍵數(shù)據(jù)來防止關(guān)鍵數(shù)據(jù)被修改。但是,這種方法必須時(shí)時(shí)連接網(wǎng)絡(luò),若需要保護(hù)的關(guān)鍵數(shù)據(jù)較多,則會(huì)消耗過多流量。而且,通過攔截網(wǎng)絡(luò)封包來獲取發(fā)送的數(shù)據(jù),進(jìn)而偽造服務(wù)器和網(wǎng)絡(luò)封包也可以達(dá)到修改數(shù)據(jù)的目的。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提出一種數(shù)據(jù)處理方法及裝置,能夠有效保護(hù)內(nèi)存中的數(shù)據(jù)不被惡意修改。
[0006]本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法,包括:
[0007]為N個(gè)待存儲(chǔ)的變量配置M個(gè)存儲(chǔ)空間;M彡N彡I ;
[0008]為每個(gè)變量指定一個(gè)固定的存儲(chǔ)空間進(jìn)行數(shù)值存儲(chǔ);
[0009]根據(jù)預(yù)設(shè)的第一移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的比特位進(jìn)行移位操作。
[0010]進(jìn)一步地,在所述根據(jù)預(yù)設(shè)的第一移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位操作之后,還包括:
[0011]接收數(shù)據(jù)請(qǐng)求方發(fā)送的數(shù)據(jù)寫入請(qǐng)求;所述數(shù)據(jù)寫入請(qǐng)求包含待寫入變量的名稱和數(shù)值;
[0012]判斷所述待寫入變量的名稱是否存在于預(yù)設(shè)的鏈表中;所述鏈表為每個(gè)變量的名稱與其存儲(chǔ)空間的對(duì)應(yīng)關(guān)系表;
[0013]若存在,則根據(jù)所述待寫入變量的名稱,從所述鏈表中查詢獲得所述待寫入變量的存儲(chǔ)空間;若不存在,則將所述M個(gè)存儲(chǔ)空間中的一個(gè)空閑的存儲(chǔ)空間配置給所述待寫入變量,并將所述待寫入變量的名稱和其存儲(chǔ)空間的對(duì)應(yīng)關(guān)系保存在所述鏈表中;
[0014]根據(jù)所述第一移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位還原;
[0015]在所述待寫入變量的存儲(chǔ)空間中寫入所述待寫入變量的數(shù)值;
[0016]根據(jù)預(yù)設(shè)的第二移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位操作。
[0017]進(jìn)一步地,在所述根據(jù)預(yù)設(shè)的第一移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位操作之后,還包括:
[0018]接收數(shù)據(jù)請(qǐng)求方發(fā)送的數(shù)據(jù)讀取請(qǐng)求;所述數(shù)據(jù)讀取請(qǐng)求包含待讀取變量的名稱;
[0019]判斷所述待讀取變量的名稱是否存在于預(yù)設(shè)的鏈表中;
[0020]若存在,則根據(jù)所述待讀取變量的名稱,從所述鏈表中查詢獲得所述待讀取變量的存儲(chǔ)空間;若不存在,則返回讀取失敗提示;
[0021 ] 根據(jù)所述第一移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位還原;
[0022]從所述待讀取變量的存儲(chǔ)空間中讀取所述待讀取變量的數(shù)值,并反饋給所述數(shù)據(jù)請(qǐng)求方;
[0023]根據(jù)預(yù)設(shè)的第二移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位操作。
[0024]在一個(gè)優(yōu)選地實(shí)施方式中,在所述為每個(gè)變量指定一個(gè)固定的存儲(chǔ)空間進(jìn)行數(shù)值存儲(chǔ)之后,還包括:
[0025]根據(jù)預(yù)設(shè)的第一異或算法,對(duì)每個(gè)存儲(chǔ)空間中的數(shù)值分別進(jìn)行異或加密,獲得每個(gè)數(shù)值的第一加密值,并將所述第一加密值寫入對(duì)應(yīng)的存儲(chǔ)空間。
[0026]進(jìn)一步地,在所述根據(jù)預(yù)設(shè)的第一移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位操作之后,還包括:
[0027]接收數(shù)據(jù)請(qǐng)求方發(fā)送的數(shù)據(jù)寫入請(qǐng)求;所述數(shù)據(jù)寫入請(qǐng)求包含待寫入變量的名稱和數(shù)值;
[0028]判斷所述待寫入變量的名稱是否存在于預(yù)設(shè)的鏈表中;
[0029]若存在,則根據(jù)所述待寫入變量的名稱,從所述鏈表中查詢獲得所述待寫入變量的存儲(chǔ)空間;若不存在,則將所述M個(gè)存儲(chǔ)空間中的一個(gè)空閑的存儲(chǔ)空間配置給所述待寫入變量,并將所述待寫入變量的名稱和其存儲(chǔ)空間的對(duì)應(yīng)關(guān)系保存在所述鏈表中;
[0030]根據(jù)所述第一移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位還原;
[0031]根據(jù)所述第一異或算法,對(duì)所述M個(gè)存儲(chǔ)空間中每個(gè)第一加密值分別進(jìn)行異或操作,將每個(gè)第一加密值還原成數(shù)值;
[0032]在所述待寫入變量的存儲(chǔ)空間中寫入所述待寫入變量的數(shù)值;
[0033]根據(jù)預(yù)設(shè)的第二異或算法,對(duì)每個(gè)存儲(chǔ)空間中的數(shù)值分別進(jìn)行異或加密,獲得每個(gè)數(shù)值的第二加密值,并將所述第二加密值寫入對(duì)應(yīng)的存儲(chǔ)空間;
[0034]根據(jù)預(yù)設(shè)的第二移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位操作。
[0035]進(jìn)一步地,在所述根據(jù)預(yù)設(shè)的第一移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位操作之后,還包括:
[0036]接收數(shù)據(jù)請(qǐng)求方發(fā)送的數(shù)據(jù)讀取請(qǐng)求;所述數(shù)據(jù)讀取請(qǐng)求包含待讀取變量的名稱;
[0037]判斷所述待讀取變量的名稱是否存在于預(yù)設(shè)的鏈表中;
[0038]若存在,則根據(jù)所述待讀取變量的名稱,從所述鏈表中查詢獲得所述待讀取變量的存儲(chǔ)空間;若不存在,則返回讀取失敗提示;
[0039]根據(jù)所述第一移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位還原;
[0040]根據(jù)所述第一異或算法,對(duì)所述M個(gè)存儲(chǔ)空間中每個(gè)第一加密值分別進(jìn)行異或操作,將每個(gè)第一加密值還原成數(shù)值;
[0041]從所述待讀取變量的存儲(chǔ)空間中讀取所述待讀取變量的數(shù)值,并反饋給所述數(shù)據(jù)請(qǐng)求方;
[0042]根據(jù)預(yù)設(shè)的第二異或算法,對(duì)每個(gè)存儲(chǔ)空間中的數(shù)值分別進(jìn)行異或加密,獲得每個(gè)數(shù)值的第二加密值,并將所述第二加密值寫入對(duì)應(yīng)的存儲(chǔ)空間;
[0043]根據(jù)預(yù)設(shè)的第二移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位操作。
[0044]在另一個(gè)優(yōu)選地實(shí)施方式中,在所述根據(jù)預(yù)設(shè)的第一移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位操作之后,還包括:
[0045]采用哈希算法,對(duì)所述M個(gè)存儲(chǔ)空間中的所有比特位的值進(jìn)行計(jì)算,獲得第一哈希值。
[0046]進(jìn)一步地,在所述采用哈希算法,對(duì)所述M個(gè)存儲(chǔ)空間中的所有比特位的值進(jìn)行計(jì)算,獲得第一哈希值之后,還包括:
[0047]接收數(shù)據(jù)請(qǐng)求方發(fā)送的數(shù)據(jù)請(qǐng)求;
[0048]采用所述哈希算法,對(duì)所述M個(gè)存儲(chǔ)空間中的所有比特位的值進(jìn)行計(jì)算,獲得第二哈希值;
[0049]判斷所述第二哈希值與所述第一哈希值是否相同;
[0050]若相同,則對(duì)所述數(shù)據(jù)請(qǐng)求進(jìn)行處理;
[0051 ] 若不相同,則拒絕處理所述數(shù)據(jù)請(qǐng)求。
[0052]相應(yīng)地,本發(fā)明實(shí)施例還提供一種數(shù)據(jù)處理裝置,包括:
[0053]配置模塊,用于為N個(gè)待存儲(chǔ)的變量配置M個(gè)存儲(chǔ)空間;M彡N彡I ;
[0054]存儲(chǔ)模塊,用于為每個(gè)變量指定一個(gè)固定的存儲(chǔ)空間進(jìn)行數(shù)值存儲(chǔ);以及,
[0055]移位模塊,用于根據(jù)預(yù)設(shè)的第一移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的比特位進(jìn)行移位操作。
[0056]進(jìn)一步地,所述數(shù)據(jù)處理裝置還包括:
[0057]第一寫入請(qǐng)求接收模塊,用于接收數(shù)據(jù)請(qǐng)求方發(fā)送的數(shù)據(jù)寫入請(qǐng)求;所述數(shù)據(jù)寫入請(qǐng)求包含待寫入變量的名稱和數(shù)值;
[0058]第一判斷模塊,用于判斷所述待寫入變量的名稱是否存在于預(yù)設(shè)的鏈表中;所述鏈表為每個(gè)變量的名稱與其存儲(chǔ)空間的對(duì)應(yīng)關(guān)系表;
[0059]第一存儲(chǔ)空間獲取模塊,用于若存在,則根據(jù)所述待寫入變量的名稱,從所述鏈表中查詢獲得所述待寫入變量的存儲(chǔ)空間;若不存在,則將所述M個(gè)存儲(chǔ)空間中的一個(gè)空閑的存儲(chǔ)空間配置給所述待寫入變量,并將所述待寫入變量的名稱和其存儲(chǔ)空間的對(duì)應(yīng)關(guān)系保存在所述鏈表中;
[0060]第一移位還原模塊,用于根據(jù)所述第一移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位還原;
[0061]第一寫入模塊,用于在所述待寫入變量的存儲(chǔ)空間中寫入所述待寫入變量的數(shù)值;以及,
[0062]第一移位操作模塊,用于根據(jù)預(yù)設(shè)的第二移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位操作。
[0063]進(jìn)一步地,所述數(shù)據(jù)處理裝置還包括:
[0064]第一讀取請(qǐng)求接收模塊,用于接收數(shù)據(jù)請(qǐng)求方發(fā)送的數(shù)據(jù)讀取請(qǐng)求;所述數(shù)據(jù)讀取請(qǐng)求包含待讀取變量的名稱;
[0065]第一名稱判斷模塊,用于判斷所述待讀取變量的名稱是否存在于預(yù)設(shè)的鏈表中;
[0066]第一存儲(chǔ)空間查詢模塊,用于若存在,則根據(jù)所述待讀取變量的名稱,從所述鏈表中查詢獲得所述待讀取變量的存儲(chǔ)空間;若不存在,則返回讀取失敗提示;
[0067]第一還原模塊,用于根據(jù)所述第一移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位還原;
[0068]第一讀取模塊,用于從所述待讀取變量的存儲(chǔ)空間中讀取所述待讀取變量的數(shù)值,并反饋給所述數(shù)據(jù)請(qǐng)求方;以及,
[0069]第一操作模塊,用于根據(jù)預(yù)設(shè)的第二移位算法,對(duì)所述M個(gè)存儲(chǔ)空間的所有比特位進(jìn)行移位操作。
[0070]在一個(gè)優(yōu)選地實(shí)施方式中,所述數(shù)據(jù)處理裝置還包括:
[0071]異或加密模塊,用于根據(jù)預(yù)設(shè)的第一異或算法,對(duì)每個(gè)存儲(chǔ)空間中的數(shù)值分別進(jìn)行異或加密,獲得每個(gè)數(shù)值的第一加密值,并將所述第一加密值寫入對(duì)應(yīng)的存儲(chǔ)空間。
[0072]進(jìn)一步地,所述數(shù)據(jù)處理裝置還包括:
[0073]第二寫入請(qǐng)求接收模塊,用于接收數(shù)據(jù)請(qǐng)求方發(fā)送的數(shù)據(jù)寫入請(qǐng)求;所述數(shù)據(jù)寫入請(qǐng)求包含待寫入變量的名稱和數(shù)值;
[0074]第二判斷模塊,用于判斷所述待寫入變量的名稱是否存在于預(yù)設(shè)的鏈表中;
[0075]