![cocos2d x學(xué)習(xí)筆記:使用摘要算法進(jìn)記錄存儲(chǔ)_第1頁(yè)](http://file4.renrendoc.com/view10/M03/28/1C/wKhkGWekUiOAFdS5AAG-yTxsOLo206.jpg)
![cocos2d x學(xué)習(xí)筆記:使用摘要算法進(jìn)記錄存儲(chǔ)_第2頁(yè)](http://file4.renrendoc.com/view10/M03/28/1C/wKhkGWekUiOAFdS5AAG-yTxsOLo2062.jpg)
![cocos2d x學(xué)習(xí)筆記:使用摘要算法進(jìn)記錄存儲(chǔ)_第3頁(yè)](http://file4.renrendoc.com/view10/M03/28/1C/wKhkGWekUiOAFdS5AAG-yTxsOLo2063.jpg)
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
cocos2d-x學(xué)習(xí)筆記:使用摘要算法進(jìn)記錄存儲(chǔ)本文將探討如何使用摘要算法進(jìn)行存檔校驗(yàn)的方法。
準(zhǔn)備工作摘要算法很多,算法內(nèi)容都是公開的。所以網(wǎng)絡(luò)上有很多現(xiàn)成的算法庫(kù),最有名的是Crypto++,該庫(kù)支持大量對(duì)稱加密,非對(duì)稱加密,和摘要算法。不過(guò)這庫(kù)太龐大了,我們只是用一個(gè)簡(jiǎn)單的摘要算法,就先不用這玩意了。我選擇了SHA1,打開后發(fā)現(xiàn)非常簡(jiǎn)潔,只有兩個(gè)源代碼(sha1.cpp,sha1.h),還有一個(gè)是測(cè)試代碼(testsha1.cpp)。我們先新建一個(gè)工程名為TestSha,然后把源代碼導(dǎo)入。然后為了方便調(diào)試,我們需要printf,cocos2d-x中打開printf的方法如下:在代理函數(shù)boolAppDelegate::applicationDidFinishLaunching()里開頭添加以下代碼:_tsetlocale(LC_ALL,_T(""));::AllocConsole();::freopen("conout$","w",stdout);別忘了加頭文件#include<tchar.h>然后你就可以使用printf啦,哇咔咔。
如何用SHA1做存檔校驗(yàn)我們使用如下代碼寫入存儲(chǔ)記錄#defineTEXT1"teststring"#defineKEY"goldlion"SHA1*sha1;unsignedchar*digest;CCUserDefault*save=CCUserDefault::sharedUserDefault();save->setStringForKey("string_value",TEXT1);sha1=newSHA1;sha1->addBytes(TEXT1,strlen(TEXT1));//輸入數(shù)據(jù)sha1->addBytes(KEY,strlen(KEY));//輸入數(shù)據(jù)digest=sha1->getDigest();//獲取校驗(yàn)碼SHA1::hexPrinter(digest,20);//打印16進(jìn)制校驗(yàn)碼到控制臺(tái)printf("\n");deletesha1;free(digest);現(xiàn)在我們寫一個(gè)讀取校驗(yàn)#defineTEXT1"teststring"#defineKEY"goldlion"SHA1*sha1;unsignedchar*digest;CCUserDefault*save=CCUserDefault::sharedUserDefault();std::stringstr=save->getStringForKey("string_value");sha1=newSHA1;sha1->addBytes(str.c_str(),str.length());//輸入數(shù)據(jù)sha1->addBytes(KEY,strlen(KEY));//輸入數(shù)據(jù)digest=sha1->getDigest();//獲取校驗(yàn)碼SHA1::hexPrinter(digest,20);//打印16進(jìn)制校驗(yàn)碼到控制臺(tái)printf("\n");deletesha1;free(digest);可以看到,校驗(yàn)是沒(méi)有問(wèn)題的破解測(cè)試現(xiàn)在我們手動(dòng)修改存檔文件UserDefault.xml,將string_value的值修改為teststringcrack。校驗(yàn)不通過(guò),玩家修改了存檔。思路1.摘要算法即從原文中提取校驗(yàn)碼,在讀取存檔時(shí),進(jìn)行校驗(yàn)。如果原文修改,校驗(yàn)碼變化,則校驗(yàn)不通過(guò)。2.因?yàn)檎惴ǘ际枪_的,在使用時(shí),我們會(huì)在輸入待校驗(yàn)數(shù)據(jù)時(shí),多輸入一個(gè)key,這個(gè)key是隱藏在編碼中的,除非玩家有很高超逆向工程技術(shù),能反編并找到key,但我們一樣可以調(diào)整Key的算法,以及提前對(duì)數(shù)據(jù)樣本進(jìn)行混淆。這種加密強(qiáng)度足以應(yīng)付一般單機(jī)游戲的開發(fā)了。網(wǎng)游存檔是在服務(wù)器端的,而且需要傳輸校驗(yàn),所以我們也不考慮本地存檔加密了。實(shí)際中的使用以上只是演示代碼,在實(shí)際使用時(shí),我們還需注意:1.為了方便,演示中我只使用了字符串,對(duì)于bool,int等類型,你可以自己封裝函數(shù),進(jìn)行校驗(yàn),這樣比較方便。2.在編寫的校驗(yàn)代碼中,增加一個(gè)開關(guān)——隨時(shí)打開和關(guān)閉校驗(yàn)。這樣做的好處是,在校驗(yàn)關(guān)閉狀態(tài),
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 美容院開業(yè)申請(qǐng)書
- 駕照降級(jí)申請(qǐng)書
- 入廣播臺(tái)申請(qǐng)書
- 電力工程項(xiàng)目的財(cái)務(wù)風(fēng)險(xiǎn)分析與控制
- 低溫儲(chǔ)罐合同范例
- 會(huì)計(jì)勞務(wù)合同范本封面
- 2025年度廣告媒介購(gòu)買合同協(xié)議
- 事故認(rèn)定書復(fù)核申請(qǐng)書
- 2025年度農(nóng)副產(chǎn)品品牌授權(quán)合作協(xié)議
- 2025年全新公司員工集資項(xiàng)目執(zhí)行合同模板下載
- 安徽省合肥市廬陽(yáng)區(qū)評(píng)價(jià)2023-2024學(xué)年六年級(jí)下學(xué)期小升初數(shù)學(xué)模擬試卷+
- 2024年3月山東省直監(jiān)獄類面試題及參考答案全套
- 新產(chǎn)品研發(fā)工作總結(jié)匯報(bào)
- pi粉末成型工藝
- Optix-OSN3500智能化光傳輸設(shè)備業(yè)務(wù)配置手冊(cè)范本
- swagelok管接頭安裝培訓(xùn)教程
- 公墓管理考核方案
- 把子肉店創(chuàng)業(yè)計(jì)劃書
- 綜合樓裝修改造項(xiàng)目 投標(biāo)方案(技術(shù)方案)
- 冀教版五年級(jí)上冊(cè)英語(yǔ)全冊(cè)單元測(cè)試卷(含期中期末試卷及聽力音頻)
- 靜脈用藥安全輸注藥護(hù)專家指引
評(píng)論
0/150
提交評(píng)論