背包加密是一中相當高級的加密方式,不容易破解,而且還原也相對容易,因此采用這種加密方式加密游戲數據也是非常好的,只要知道背包,就可以輕易算出來,所以在游戲里面采用這種加密方式加密對游戲的影響也不是很大,不會給服務器帶來太大的負擔,而且加密是非常安全的,對於一些重要的數據采用這種方式加密是非常可靠的,說了那么多,你也許會問:“什么是背包加密方式”,好下面給大家說明。
背包分兩種,加法背包和乘法背包!想講加法背包!
我們知道:1<2,1+2<4,1+2+4<8,1+2+4+8<16,……,那么如果我們選擇這樣一些數,這些數從小到大排列,如果前面所有的數加起來的值總小於后面的數,那么這些數就可以構成一個背包,我們給一個這個背包里面的某些數的和,這個數就是被加密的數,由這個背包組成這個數只有一種組合方式,這個方式就是秘密了,例如給大家一個封包(2,3,6,12,24,48),由這個背包里的某些數構成的數:86,你知道86怎么來的嗎?當然,你看着背包里面的內容,可以知道是由2+12+24+48得到的,如果你沒有這個背包,而是直接得到這個86,你知道組成這個86的最小的數是多少嗎?你無法知道,因為加起來等於86的數非常多:85+1=86,82+2=86等等,你是無法知道的,所以,背包加密非常難破。
那么游戲里面如何利用這個加密呢?可以給大家一個例子。
如果游戲里面,用戶名和密碼只能有字母和數字組成,那么總共就那么36個元素,我們利用一個包含36個元素的背包,背包的一個元素對應一個字母或者數字,當玩家設好用戶名后,我們把這個用戶名翻譯成背包里面的元素,然后把這些用戶轉化而來的數字加起來,得到一個數,這個數就是用戶名,你得到這個數,你知道用戶名嗎?也許大家還沒明白我說什么,我把例子更具體一點,你也許就明白了!
有個密碼是:511,這個密碼是經過加法背包加密的,如果你沒有背包,你知道密碼嗎?不知道吧,呵呵!
如果我告訴你背包是:(1,2,4,8,16,32,64,128,256),也許你對密碼了解多也些了!
如果我告訴你,這個是加法背包,而且有如下對應關系:1對應a,2對應b,4對應c,8對應d,16對應e,32對應f,64——>g,128---->h,256---->i,那么你也許知道密碼就是:abcdefghi,怎么樣,從511到這個密碼,是不是很難想到呢?也許你會說,如果密碼不是這個順序呢?當然,這個完全是可能的,但是我們這里為了簡單就沒有考慮這個。
這么復雜的加密,怎么解密?有如下兩中破解方法:
1.利用孤立點破解;2.利用背包破解。
所謂孤立點,還是以上面的背包為例子,我們可以把密碼設為a,看看得到了什么密碼?1,如果我們把密碼設為b,得到的密碼為2,同理,可以把背包里面的所有元素都利用孤立點的方法全部枚舉出來,這樣我們就把背包弄到手了,對下面的破解就不成問題了,是不是很簡單?其實在加密的時候,也許它們回利用異或運算先加密一下,再利用背包加密,這樣更難破,孤立點方法非常有效,但是不是萬能的,要結合前面的方法配合使用!
利用背包,這個就簡單了,想一想,要加密也的有背包才能完成加密啊,要解密也要背包啊,呵呵,這就是說,不管是游戲的用戶端,還是游戲的服務器端,都會有該背包的,找到該背包不是就解決問題了嗎?怎么找?參考其他書籍,本書無法容納那么多的內容!特別注意游戲編程,知道是怎么做的就知道東西在哪兒了!
講完加法背包,下面講乘法背包!
乘法背包
乘法背包比加法背包更復雜,不僅是運算量大了很多,更重要的是你得到的一個被加密了的數據更大,一般都是上億的,而且在許多機密的機關里面,背包的數據都不是有這個單位,而是用位,一個加密的數據有幾百位,呵呵,你得到這個數字,可以看到你滿臉的茫然,如果這個數不是10進制,而是什么7進制啊,3進制啊,這些很不常用的進制,你要破可就難了,不過不要害怕,游戲里面絕對不會有這么復雜的加密的,如果一個數據就幾百位,而且還非常用進制,那么可以想想電腦要算多久啊,會多么影響游戲速度啊!所以我們有充分的理由相信,游戲里面加密是簡單的,還了,下面給大家看看乘法背包:
1<2,1+2<3,1*2*3<7,1*2*3*7<43,1*2*3*7*42<1683, 數字的增長還是很快的,之所以復雜,就是因為數字很大啊!
背包的特點是:如果背包里面的數據按小到大排列,那么,前面所有數據的乘積小於后面的任何一個元素,這個就是背包的特點,是不是很簡單,但是要知道乘積的數字的增長是非常快的!
怎么破解乘法背包呢?
同加法背包一樣,可以利用孤立點的方法,也可以使用直接得到背包的方法破解!
一般來說游戲里面不會使用乘法背包來加密,但是如果使用一些小的數據,也不是不可以的,大家對這種加密也可以了解一下!:
如果我們已經知道背包了,也得到加密數據,我們怎么知道這個背包數是有那些元素組曾的呢?
在加法背包里面是這樣的,找背包里面最接近這個數但是又比這個數小的數A,這個數A 一定在里面,然后把加密的數減去A,比較被減后的數,繼續重復上面的操作,是很容易就能找到所有的組成元素了!乘法的方法也是一樣的道理,這里就不介紹了!
背包解密是很復雜的,大家可以稍微學習一些,能掌握就掌握,不能掌握就算了!
好了,加密解密就這些內容,如果大家有興趣,可以學習更多的加密解密技術,這個技術是新興的技術,很多數據都需要加密,例如銀行的數據,加密就非常重要,如果你學到這門技術,對你的以后發展也是有用的!