青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 97, 文章 - 22, 評(píng)論 - 81, 引用 - 0
數(shù)據(jù)加載中……

Pygame游戲開(kāi)發(fā) 之五

Pygame游戲開(kāi)發(fā)之五

小試牛刀

大部分游戲都會(huì)對(duì)圖像文件進(jìn)行加密,這樣你就很難看到它的圖片信息,游戲就更加添加了神秘感。有加密自然有解密,所謂山外青山樓外樓,再高的加密手段都可以被破解,加密只是提高技術(shù)門(mén)檻,讓一部分人看不到你的圖片資源。

在進(jìn)行加密之前,讓我們首先把文件的結(jié)構(gòu)組織一下,用文件夾來(lái)管理各類文件。

root/

       dat/

              Animation/

              Background/

              Control/

              Monster/

              Player/

       img/

              Animation/

              Background/

              Control/

              Monster/

              Player/

       snd/

       src/

              Tools/

其中root表示游戲的根目錄,imgdat分別表示加密前和加密后的圖片文件的目錄,其下有相同的目錄結(jié)構(gòu),snd用于存放聲音文件,src存放的是后綴是.py.pyc等的python源文件。并且我們將加密的程序放在Tools目錄下。

       首先我們要大致了解加密的過(guò)程,所謂加密就是先將數(shù)據(jù)以二進(jìn)制的形式從文件中讀進(jìn)來(lái),然后采用適當(dāng)?shù)募用芩惴▽?shù)據(jù)變成另外一種形式的數(shù)據(jù),再存到文件中,這樣原本的文件格式就被當(dāng)前數(shù)據(jù)替換掉了。這里我們是對(duì)img中所有的后綴為png的文件加密,然后存到dat文件中,因?yàn)橐獙?duì)大批量文件進(jìn)行處理,最好的方法是采用批處理。

       我們?cè)?/span>Tools文件夾下建立一個(gè)Process.bat的批處理文件,并且對(duì)其進(jìn)行編輯,寫(xiě)下以下命令:

1     cd ../../img/

2     dir /s /b *.png > ../src/Tools/FileName.txt

3     cd ..

4     xcopy /s /t img dat

5     cd src/Tools/

6     encode.exe FileName.txt img dat

命令cd后跟一個(gè)目錄表示改變當(dāng)前目錄,如果跟的是“..”則表示跳到當(dāng)前目錄的父目錄下,例如第1句表示從Tools/目錄連跳兩層到root下并且進(jìn)入img目錄中,然后我們利用第2條命令將所有需要加密的文件的文件名輸出到Tools目錄下的FileName.txt文件中。

dir *.png > file 表示將當(dāng)前文件下所有后綴為png的文件的文件信息輸出到file文件中。但是它包含文件信息不止文件名,所以可以采用/b開(kāi)關(guān),表示采用空格式(Blank,沒(méi)有標(biāo)題信息或摘要),并且要求當(dāng)前目錄以及子目錄的png文件都要輸出,只要添加/s開(kāi)關(guān)即可。

然后我們回到root文件夾下,將img下的子文件夾全部復(fù)制到dat文件夾下,但是不復(fù)制文件,可以采用xcopy命令來(lái)實(shí)現(xiàn)。

最后調(diào)用encode.exeFileName.txt文件中列出的文件加密后輸出到dat文件夾下。encode.exe是我自己寫(xiě)的一個(gè)加密的小程序,這里為了方便我用C語(yǔ)言來(lái)實(shí)現(xiàn)。

       代碼如下:

#include <string>

#include 
<vector>

using namespace std;

 

#define key 367

FILE 
*fpSourceFile;

FILE 
*fpReadFile, *fpWriteFile;

char szReadFileName[ MAX_PATH ];

vector 
<char> vec;

 

string Replace(string Src, string from, string to) {

       
string Tmp;

       
string::size_type nCount = Src.find(from);

       
if(nCount != string::npos) {

              Tmp 
= Src.substr(0, nCount);

              Tmp 
= Tmp + to + "\\" + Src.substr(nCount + from.size() + 1);

              nCount 
= Tmp.find(".");

              
if(nCount != string::npos)

                     Tmp 
= Tmp.substr(0, nCount+1);

              
return Tmp + "zty";

       }


       
return "";

}


 

int main(int argc, char* argv[]) {

       
int i;

       
if(argc == 4{

              fpSourceFile 
= fopen(argv[1], "rt");

              
while(fgets(szReadFileName, MAX_PATH, fpSourceFile)) {

                     szReadFileName[ strlen(szReadFileName) 
- 1 ] = '\0';

                     fpReadFile 
= fopen(szReadFileName, "rb");

                     
if(fpReadFile) {

                            fseek(fpReadFile, 
0, SEEK_END);

                            
long nFileSize = ftell(fpReadFile);

                            fseek(fpReadFile, 
0, SEEK_SET);

                            vec.resize(nFileSize);

                            fread((
void *)&vec[0], nFileSize, 1, fpReadFile);

                            
for(i = 0; i < vec.size(); i++{

                                   vec[i] 
= (vec[i] ^ key);

                            }


                            fclose(fpReadFile);

                            
string outFile = Replace(string(szReadFileName), string(argv[2]), string(argv[3]));

                            fpWriteFile 
= fopen(outFile.c_str(), "wb");

                            fwrite((
void *)&vec[0], nFileSize, 1, fpWriteFile);

                            fclose(fpWriteFile);

                     }


              }


              fclose(fpSourceFile);

       }
else {

              printf(
"請(qǐng)運(yùn)行Process.bat文件\n");

       }


       
return 0;
}


       起初,讀入的數(shù)據(jù)是存到vec這個(gè)向量中的,然后我們通過(guò)遍歷vec的每一個(gè)字節(jié)對(duì)數(shù)據(jù)進(jìn)行加密,加密的方法很多,這里采用最簡(jiǎn)單的異或(二進(jìn)制位相同為0,不同為1)方式,這樣解密也比較簡(jiǎn)單。來(lái)看一個(gè)例子:

       對(duì)于102(二進(jìn)制表示為1100110),我們將它和給定的key(十進(jìn)制367、二進(jìn)制表示為101101111)值進(jìn)行異或,如下:

       001100110 102

101101111 367

—————

       100001001 265

原本的數(shù)據(jù)102就轉(zhuǎn)化成了和原先看似無(wú)關(guān)的數(shù)據(jù)265,如此一來(lái),將所有的數(shù)據(jù)加密完畢后,原本的圖像文件的文件頭信息也被毀了,根本無(wú)法用常用的圖像工具打開(kāi)。加密的目的就達(dá)到了。當(dāng)然如果加密完后連你自己也不知道怎么解密,那么這件事情就沒(méi)意義了…-_-|||,所以我們還要對(duì)加密好數(shù)據(jù)進(jìn)行解密,當(dāng)然這要在程序中控制。

       這個(gè)只需將原先的load_image函數(shù)進(jìn)行一個(gè)修改即可。

def load_image(file) :

       do_load()

       return Surface

 

       do_load()函數(shù)首先要用二進(jìn)制方式讀取file文件,并且通過(guò)read()接口得到文件中所有的二進(jìn)制數(shù)據(jù),通過(guò)tell()接口得到文件的大小。

       然后利用以下的循環(huán)就可以將數(shù)據(jù)進(jìn)行解密了。

    i = 0

    data = []

    while i < filesize :

        data.append( chr( (ord(filedata[i]) ^ key) % 256 ) )

        i += 1

data = ''.join(data)

在這里因?yàn)橛玫氖钱惢虿僮鳎越饷芎图用艿倪^(guò)程是一樣的,因?yàn)楫惢驖M足結(jié)合律,一個(gè)數(shù)異或上它本身等于0,任何數(shù)異或0等于它本身。于是可以這樣想,某個(gè)數(shù)據(jù)異或了key(加密的過(guò)程),再異或一次key(解密的過(guò)程),就好比:Num^key^key = Num^(key^key) = Num^0=Num這樣原先的數(shù)據(jù)就恢復(fù)了。

因?yàn)?/span>python中沒(méi)有字符的概念,我們可以通過(guò)ord(‘x’) 得到’x’ASCII碼,進(jìn)行解密操作后,再用chr(num)得到num的字符形式,最后將所有的字符數(shù)據(jù)通過(guò)join接口連接到一起變成數(shù)據(jù)流,然后通過(guò)write接口將它暫存到buf.png文件中,再調(diào)用pygame.image.load('buf.png')將它讀入,就得到了file對(duì)應(yīng)的Surface。(未完待續(xù))

posted on 2011-05-01 16:40 英雄哪里出來(lái) 閱讀(3992) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Pygame

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久综合久久美利坚合众国| 免费精品视频| 一区二区三区|亚洲午夜| 欧美激情小视频| 一区二区三区四区蜜桃| 亚洲精品国产精品乱码不99按摩| 欧美二区在线| 亚洲私人影院在线观看| 亚洲一级高清| 狠狠色狠狠色综合日日91app| 米奇777超碰欧美日韩亚洲| 久久亚洲春色中文字幕| 最近看过的日韩成人| 一区二区电影免费观看| 国产精品天美传媒入口| 久久一区二区三区av| 免费人成网站在线观看欧美高清| 亚洲另类自拍| 亚洲午夜91| 亚洲国产精品成人| 夜夜嗨网站十八久久| 国产亚洲va综合人人澡精品| 欧美fxxxxxx另类| 欧美日韩日日骚| 久久免费少妇高潮久久精品99| 美女视频黄a大片欧美| 一本色道88久久加勒比精品 | 在线视频精品一区| 国产毛片久久| 91久久精品国产91久久| 国产精品私房写真福利视频| 免播放器亚洲| 国产精品日韩欧美一区二区| 裸体歌舞表演一区二区| 欧美视频中文一区二区三区在线观看| 欧美在线视频观看免费网站| 免费亚洲视频| 久久人人精品| 欧美日韩一区二区三区在线看 | 99国产精品国产精品久久| 亚洲女同性videos| 日韩写真视频在线观看| 久久精品亚洲乱码伦伦中文| 国产精品99久久久久久宅男 | 欧美巨乳在线观看| 久久久亚洲高清| 欧美午夜精品久久久久免费视| 麻豆九一精品爱看视频在线观看免费| 欧美午夜不卡在线观看免费| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲专区国产精品| 9久草视频在线视频精品| 久久久久网址| 久久精品国产一区二区电影| 欧美视频免费在线| 亚洲激情国产精品| 亚洲国产成人午夜在线一区| 欧美一区=区| 欧美在线视频不卡| 国产精品久久久久久一区二区三区| 亚洲国产日韩在线| 91久久在线观看| 欧美1区2区视频| 欧美成人精品三级在线观看| 黄色精品网站| 欧美专区在线观看一区| 久久国产精品网站| 国产女人18毛片水18精品| 亚洲天堂av在线免费观看| 一区二区久久| 欧美性感一类影片在线播放| 日韩一区二区精品| 中文精品视频一区二区在线观看| 欧美日韩p片| 国产精品麻豆成人av电影艾秋| 9l国产精品久久久久麻豆| 一区二区日本视频| 欧美色偷偷大香| 亚洲一区二区三区久久| 午夜国产精品视频免费体验区| 国产精品视频大全| 欧美一区二区在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 在线观看一区二区精品视频| 免费观看日韩| 亚洲精品久久久久中文字幕欢迎你| 中国av一区| 国产乱码精品一区二区三区不卡| 欧美在线一区二区三区| 欧美国产另类| 亚洲视频免费| 国产性天天综合网| 美女性感视频久久久| 日韩午夜三级在线| 久久国产欧美| 亚洲理伦在线| 国产欧美日韩综合一区在线观看| 久久精品人人爽| 亚洲精品黄色| 久久久久久香蕉网| 日韩午夜中文字幕| 国产日韩精品视频一区| 久久夜色撩人精品| 在线视频你懂得一区二区三区| 久久精品av麻豆的观看方式| 亚洲日本成人在线观看| 国产精品你懂的在线| 久久久国产精品一区二区中文 | 亚洲精品日韩一| 久久狠狠久久综合桃花| 亚洲精品国精品久久99热| 国产欧美高清| 欧美欧美天天天天操| 久久都是精品| 亚洲网站视频福利| 欧美激情亚洲综合一区| 久久国产精品久久国产精品| av成人免费观看| 一区二区在线不卡| 国产精品午夜久久| 欧美日韩第一区| 女仆av观看一区| 久久精品日产第一区二区| 夜夜爽夜夜爽精品视频| 欧美成人r级一区二区三区| 欧美在线观看视频在线| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美揉bbbbb揉bbbbb| 老司机精品视频网站| 亚洲欧美日韩国产综合| 亚洲精品社区| 亚洲国产欧美在线| 麻豆av一区二区三区| 久久成人一区二区| 亚洲欧美日韩视频一区| 99国产精品国产精品久久| 亚洲国产婷婷综合在线精品| 国模私拍视频一区| 国产精品一香蕉国产线看观看 | 美女视频黄免费的久久| 久久成人久久爱| 欧美一区二区私人影院日本 | 亚洲在线网站| 亚洲视频第一页| 99riav国产精品| 99视频一区| 日韩一区二区免费看| 夜夜嗨av色一区二区不卡| 日韩小视频在线观看专区| 亚洲人成网站在线观看播放| 91久久线看在观草草青青| 亚洲欧洲一区二区在线观看| 亚洲三级免费观看| 亚洲精品乱码久久久久久| 亚洲乱码久久| 一区二区激情视频| 亚洲一区二区精品在线观看| 亚洲午夜未删减在线观看| 国产精品99久久久久久久女警| 亚洲视频在线看| 欧美一级视频| 麻豆视频一区二区| 欧美激情亚洲综合一区| 欧美色网一区二区| 国产精品一级| 尤妮丝一区二区裸体视频| 最新国产成人在线观看| 一区二区三区免费看| 午夜精品久久久久| 老牛嫩草一区二区三区日本| 亚洲黑丝一区二区| 在线一区欧美| 久久免费一区| 欧美日韩免费在线视频| 国产视频一区在线观看一区免费| 亚洲福利电影| 亚洲一区二区免费看| 久久视频这里只有精品| 亚洲国产精品一区二区www在线| 99天天综合性| 久久嫩草精品久久久精品| 欧美日韩亚洲91| 韩国三级电影久久久久久| 一本色道久久综合狠狠躁篇的优点 | 国产精品播放| 禁断一区二区三区在线| 一本一本久久a久久精品综合妖精| 亚洲欧美日韩在线| 欧美夫妇交换俱乐部在线观看| 99视频精品免费观看| 久久午夜羞羞影院免费观看| 国产精品极品美女粉嫩高清在线| 国产真实乱子伦精品视频| 一区二区三欧美| 麻豆九一精品爱看视频在线观看免费| 99re6这里只有精品| 久久综合99re88久久爱| 国产麻豆综合| 亚洲一区二区在线视频 | 中文精品一区二区三区|