當前位置:編程學習大全網 - 編程語言 - 請問如何使用背包加密

請問如何使用背包加密

加法背包還是乘法?

1=a

2=b

4=c

8=d

16=e

32=f

64=0

128=9

256=8

1+1+1+64+128+128=323

加密後的數據為323

..這個就是加法背包.

乘法..

1*1*1*64*128*128=? 就是妳的乘法背包結果

背包加密是壹中相當高級的加密方式,不容易破解,而且還原也相對容易,因此采用這種加密方式加密遊戲數據也是非常好的,只要知道背包,就可以輕易算出來,所以在遊戲裏面采用這種加密方式加密對遊戲的影響也不是很大,不會給服務器帶來太大的負擔,而且加密是非常安全的,對於壹些重要的數據采用這種方式加密是非常可靠的.

背包分兩種,加法背包和乘法背包!想講加法背包!

我們知道: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,同理,可以把背包裏面的所有元素都利用孤立點的方法全部枚舉出來,這樣我們就把背包弄到手了,對下面的破解就不成問題了,是不是很簡單?其實在加密的時候,也許它們回利用異或運算先加密壹下,再利用背包加密,這樣更難破,孤立點方法非常有效,但是不是萬能的,要結合前面的方法配合使用!

利用背包,這個就簡單了,想壹想,要加密也的有背包才能完成加密啊,要解密也要背包啊,呵呵,這就是說,不管是遊戲的用戶端,還是遊戲的服務器端,都會有該背包的,找到該背包不是就解決問題了嗎?怎麽找?參考其他書籍,本書無法容納那麽多的內容!特別註意遊戲編程,知道是怎麽做的就知道東西在哪兒了!

  • 上一篇:程序設計學士
  • 下一篇:Youtube 算法規則
  • copyright 2024編程學習大全網