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