一種實現(xiàn)加密的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及加密技術(shù),尤指一種實現(xiàn)加密的方法及裝置。
【背景技術(shù)】
[0002]手機(jī)游戲支付屬于高安全性的支付業(yè)務(wù),需要采用安全性高的加解密算法來防止惡意破解;目前,基于RSA技術(shù)對手機(jī)游戲的支付過程進(jìn)行加解密,RSA采用非對稱的加密方式,每個用戶進(jìn)行支付業(yè)務(wù)時,都有自己的私鑰,由于RSA算法是公開的,加密的安全性取決于密鑰的長度,密鑰長度越長,加密的安全性越高,加密結(jié)果的長度也會增長,當(dāng)密鑰長度為2048位時,加密比較安全。由于密鑰長度和加密結(jié)果長度的增加,密鑰生成時長也會明顯增長;如果使用服務(wù)器為用戶生成RSA的密鑰,由于密鑰長度及密鑰結(jié)果增長,密鑰長度增加導(dǎo)致計算量成幾何狀態(tài)增加,導(dǎo)致運行時間大幅增加,影響支付業(yè)務(wù)的工作效率。另外,密鑰長度增長,導(dǎo)致在客戶端容易查找獲得密鑰,對支付業(yè)務(wù)的安全性會造成一定的影響。
【發(fā)明內(nèi)容】
[0003]為了解決上述問題,本發(fā)明提供一種實現(xiàn)加密的方法及裝置,能夠保證支付業(yè)務(wù)的安全性能,縮短密鑰長度,提高生成密鑰的工作效率。
[0004]為了達(dá)到本發(fā)明的目的,本申請?zhí)峁┮环N實現(xiàn)加密的方法,包括:
[0005]對加密信息字符串對應(yīng)的信息數(shù)組按照預(yù)設(shè)的RSA非公算法進(jìn)行處理,獲得非公加密的數(shù)組;
[0006]將獲得的非公加密的數(shù)組通過相關(guān)進(jìn)制算法輸出為可見字符串。
[0007]進(jìn)一步地,按照預(yù)設(shè)的RSA非公算法進(jìn)行處理之前,該方法還包括:
[0008]將所述加密信息字符串轉(zhuǎn)換為二進(jìn)制數(shù)并按照預(yù)設(shè)方式進(jìn)行拆分,采用隨機(jī)數(shù)填補到拆分生成的字節(jié),對填補后的各字節(jié)進(jìn)行移位運算后,再轉(zhuǎn)換為所述信息數(shù)組;
[0009]所述按照預(yù)設(shè)的RSA非公算法進(jìn)行處理后,該方法還包括:將填補到拆分生成字節(jié)的隨機(jī)數(shù)和移位運算移位方向和移位位數(shù)存儲在所述RSA非公加密數(shù)組中預(yù)置的位置。
[0010]進(jìn)一步地,將加密信息字符串轉(zhuǎn)換為二進(jìn)制數(shù)并按照預(yù)設(shè)方式進(jìn)行拆分,采用隨機(jī)數(shù)填補到拆分生成的字節(jié),對填補后的各字節(jié)進(jìn)行移位運算包括:
[0011]將所述加密信息字符串的各二進(jìn)制數(shù)根據(jù)高四位和低四位方式拆分為兩個字
-K-
T ;
[0012]對拆分后各個字節(jié)的空白位填補隨機(jī)數(shù);
[0013]將填補完空白位的各二進(jìn)制數(shù)分別通過預(yù)先設(shè)定的移位方向標(biāo)識和移位位數(shù)進(jìn)行移位運算。
[0014]進(jìn)一步地,將填補到拆分生成字節(jié)的隨機(jī)數(shù)和移位運算移位方向和移位位數(shù)存儲在所述RSA非公加密數(shù)組中預(yù)置的位置具體包括:
[0015]在所述RSA非公加密數(shù)組預(yù)置的位置通過4比特bit存儲進(jìn)行填補的隨機(jī)數(shù),通過4bit表示移位方向和移位位數(shù)。
[0016]進(jìn)一步地,獲得非公加密的數(shù)組包括:
[0017]對所述加密信息字符串對應(yīng)的數(shù)組按照預(yù)先設(shè)定的算法組合生成所述RSA非公算法進(jìn)行處理;
[0018]所述預(yù)先設(shè)定的算法組合生成的RSA非公算法由改進(jìn)的滑動窗口算法、和/或2k進(jìn)制算法、和/或中國剩余定理、和/或SMM算法組合生成。
[0019]進(jìn)一步地,預(yù)設(shè)的RSA非公算法為:由2k進(jìn)制算法和SMM算法組合生成的RSA非公算法;
[0020]按照所述預(yù)設(shè)的RSA非公算法進(jìn)行處理具體包括:
[0021]根據(jù)2k進(jìn)制算法將加密信息字符串對應(yīng)的數(shù)組的指數(shù)進(jìn)行2 k進(jìn)制化轉(zhuǎn)化;
[0022]將2k進(jìn)制化算法的迭代法中的乘方后求模的計算調(diào)整為在求乘方的過程中求模,計算獲得中間結(jié)果;
[0023]如果中間結(jié)果值大于所述求乘方的過程中求模的模數(shù)的一半,則根據(jù)SMM算法用模數(shù)減去中間結(jié)果值得到的差來替代中間結(jié)果值,并繼續(xù)RSA算法計算。
[0024]進(jìn)一步地,相關(guān)進(jìn)制算法為:自定義的90進(jìn)制可見字符算法或其它進(jìn)制算法。
[0025]進(jìn)一步地,該方法還包括:
[0026]通過獲取信息摘要的計算對加密信息字符串產(chǎn)生一串防偽的校驗碼的簽名;
[0027]所述獲取信息摘要的計算為:對所述加密信息字符串進(jìn)行預(yù)設(shè)次數(shù)的消息摘要算法第五版MD5和/或安全哈希算法SHAl轉(zhuǎn)換的計算。
[0028]另一方面,本申請還提供一種實現(xiàn)加密的裝置,包括:非公加密單元及輸出字符單元;其中,
[0029]非公加密單元,用于對加密信息字符串對應(yīng)的信息數(shù)組按照預(yù)設(shè)的RSA非公算法進(jìn)行處理,獲得非公加密的數(shù)組;
[0030]輸出字符單元,用于將獲得的非公加密的數(shù)組通過相關(guān)進(jìn)制算法輸出為可見字符串O
[0031]進(jìn)一步地,該裝置還包括拆分移位單元,用于所述按照預(yù)設(shè)的RSA非公算法進(jìn)行處理之前,
[0032]將加密信息字符串的各二進(jìn)制數(shù)根據(jù)高四位和低四位方式拆分為兩個字節(jié);
[0033]對拆分后各個字節(jié)的空白位填補隨機(jī)數(shù);
[0034]將填補完空白位的各二進(jìn)制數(shù)分別通過預(yù)先設(shè)定的移位方向標(biāo)識和移位位數(shù)進(jìn)行移位運算;
[0035]按照所述預(yù)設(shè)的RSA非公算法進(jìn)行處理后,在RSA非公加密數(shù)組預(yù)置的位置通過4bit存儲進(jìn)行填補的隨機(jī)數(shù),通過4bit表示移位方向和移位位數(shù)。
[0036]進(jìn)一步地,非公加密單元具體用于,
[0037]對加密信息字符串對應(yīng)的信息數(shù)組按照預(yù)設(shè)的由2k進(jìn)制算法和SMM算法預(yù)先設(shè)定組合生成的RSA非公算法,通過
[0038]根據(jù)2k進(jìn)制算法將加密信息字符串對應(yīng)的數(shù)組的指數(shù)進(jìn)行2 k進(jìn)制化轉(zhuǎn)化;
[0039]將2k進(jìn)制化算法的迭代法中的乘方后求模的計算調(diào)整為在求乘方的過程中求模,計算獲得中間結(jié)果;
[0040]如果中間結(jié)果值大于所述求乘方的過程中求模的模數(shù)的一半,則根據(jù)SMM算法用模數(shù)減去中間結(jié)果值得到的差來替代中間結(jié)果值,并繼續(xù)RSA算法計算處理,獲得非公加密的數(shù)組;
[0041]進(jìn)一步地,輸出字符單元具體用于,將獲得的非公加密的數(shù)組通過自定義的90進(jìn)制可見字符算法或其它進(jìn)制算法輸出為可見字符串。
[0042]進(jìn)一步地,該裝置還包括簽名單元,用于通過對加密信息字符串進(jìn)行預(yù)設(shè)次數(shù)的MD5和/或SHAl轉(zhuǎn)換的計算,產(chǎn)生一串防偽的校驗碼的簽名。
[0043]與現(xiàn)有技術(shù)相比,本發(fā)明提供的技術(shù)方案,包括:對加密信息字符串對應(yīng)的信息數(shù)組按照預(yù)設(shè)的RSA非公算法進(jìn)行處理,獲得非公加密的數(shù)組;將獲得的非公加密的數(shù)組通過相關(guān)進(jìn)制算法輸出為可見字符串。本發(fā)明通過非預(yù)設(shè)的RSA非公算法對加密信息字符串對應(yīng)的信息數(shù)組進(jìn)行處理,保證了加密的安全性,通過相關(guān)進(jìn)制算法輸出為可見字符串,降低了密鑰長度及密鑰結(jié)果長度,提高了業(yè)務(wù)支付中加密算法的工作效率。
[0044]進(jìn)一步地,通過對加密信息字符串進(jìn)行拆分、填補及移位處理,也進(jìn)一步提高了加密算法的安全性。
【附圖說明】
[0045]附圖用來提供對本申請技術(shù)方案的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本申請的實施例一起用于解釋本申請的技術(shù)方案,并不構(gòu)成對本申請技術(shù)方案的限制。
[0046]圖1為本發(fā)明實現(xiàn)加密的方法的流程圖;
[0047]圖2為本發(fā)明實現(xiàn)加密的裝置的結(jié)構(gòu)框圖。
【具體實施方式】
[0048]為使本申請的目的、技術(shù)方案和優(yōu)點更加清楚明白,下文中將結(jié)合附圖對本申請的實施例進(jìn)行詳細(xì)說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。
[0049]圖1為本發(fā)明實現(xiàn)加密的方法的流程圖,如圖1所示,包括:
[0050]步驟100、對加密信息字符串對應(yīng)的信息數(shù)組按照預(yù)設(shè)的RSA非公算法進(jìn)行處理,獲得非公加密的數(shù)組。
[0051]需要說明的是,RSA算法是1977年由羅納德.李維斯特(Ron Rivest)、阿迪?薩莫爾(Adi Shamir)和倫納德?阿德曼(Leonard Adleman) 一起提出公鑰加密的。RSA由他們?nèi)诵帐祥_頭字母拼在一起組成的。
[0052]將加密信息字符串轉(zhuǎn)換為二進(jìn)制數(shù)并按照預(yù)設(shè)方式進(jìn)行拆分,采用隨機(jī)數(shù)填補到拆分生成的字節(jié),對填補后的各字節(jié)進(jìn)行移位運算后,再轉(zhuǎn)換為信息數(shù)組;
[0053]按照預(yù)設(shè)的RSA非公算法進(jìn)行處理后,該方法還包括:將填補到拆分生成字節(jié)的隨機(jī)數(shù)和移位運算移位方向和移位位數(shù)存儲在RSA非公加密數(shù)組中預(yù)置的位置。
[0054]優(yōu)選的,將加密信息字符串轉(zhuǎn)換為二進(jìn)制數(shù)并按照預(yù)設(shè)方式進(jìn)行拆分,采用隨機(jī)數(shù)填補到拆分生成的字節(jié),對填補后的各字節(jié)進(jìn)行移位運算包括:
[0055]將加密信息字符串的各二進(jìn)制數(shù)根據(jù)高四位和低四位方式拆分為兩個字節(jié);
[0056]對拆分后各個字節(jié)的空白位填補隨機(jī)數(shù);
[0057]將填補完空白位的各二進(jìn)制數(shù)分別通過預(yù)先設(shè)定的移位方向標(biāo)識和移位位數(shù)進(jìn)行移位運算。
[0058]將填補到拆分生成字節(jié)的隨機(jī)數(shù)和移位運算移位方向和移位位數(shù)存儲在RSA非公加密數(shù)組中預(yù)置的位置具體包括:
[0059]在RSA非公加密數(shù)組預(yù)置的位置通過4比特(bit)存儲進(jìn)行填補的隨機(jī)數(shù),通過4bit表示移位方向和移位位數(shù)。
[0060]本步驟中,獲得非公加密的數(shù)組包括:
[0061]對加密信息字符串對應(yīng)的數(shù)組按照預(yù)先設(shè)定的算法組合生成RSA非公算法進(jìn)行處理;
[0062]預(yù)先設(shè)定的算法組合生成的RSA非公算法由改進(jìn)的滑動窗口算法、和/或2k進(jìn)制算法、和/或中國剩余定理、和/或SMM算法組合生成。這里,SMM算法是一種現(xiàn)有的基于乘同余對稱特性的快速算法
[0063]預(yù)設(shè)的RSA非公算法為:由2k進(jìn)制算法和SMM算法組合生成的RSA非公算法;
[0064]按照預(yù)設(shè)的RSA非公算法進(jìn)行處理具體包括:
[0065]根據(jù)2k進(jìn)制算法將加密信息字符串對應(yīng)的數(shù)組的指數(shù)進(jìn)行2 k進(jìn)制化轉(zhuǎn)化;
[0066]將2k進(jìn)制化算法的迭代法中的乘方后求模的計算調(diào)整為在求乘方的過程中求模,計算獲得中間結(jié)果;這里,通過迭代法可以減少中間結(jié)果的數(shù)值。
[0067]如果中間結(jié)果值大于求乘方的過程中求模的模數(shù)的一半,則根據(jù)SMM算法用模數(shù)減去中間結(jié)果值得到的差來替代中間結(jié)果值,并繼續(xù)RSA算法計算。
[0068]需要說明的是,RSA依賴大數(shù)運算,目前算法都在1024位大數(shù)運算之上,而大多數(shù)編譯器只能支持64位整數(shù)運算。最簡單的辦法是將大數(shù)當(dāng)作數(shù)組進(jìn)行處理,數(shù)組的各元素就是大數(shù)每一位上的數(shù)字,通常是0-9的十進(jìn)制數(shù)字,然后對“數(shù)字?jǐn)?shù)組”編寫加減乘除函數(shù),但這樣還是效率低,因為二進(jìn)制為1024位的大數(shù)在十進(jìn)制下也有三百多位,做運算的時候還需要許多額外空間存放進(jìn)退位標(biāo)志及中間結(jié)果。本發(fā)明通過2k進(jìn)制化算法將大數(shù)表示為一個η進(jìn)制數(shù)組,即可以是32位也可以是64位進(jìn)制數(shù)組,這樣就可以把1024位的大數(shù)變?yōu)?2位32進(jìn)制的數(shù)組。完成了數(shù)組變換,通過減少迭代次數(shù)可以提高效率,因此將數(shù)組化的大數(shù)