


下載本文檔
版權(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ì)稱加密,和摘要算法。不過這庫(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)是沒有問題的破解測(cè)試現(xiàn)在我們手動(dòng)修改存檔文件UserDefault.xml,將string_value的值修改為teststringcrack。校驗(yàn)不通過,玩家修改了存檔。思路1.摘要算法即從原文中提取校驗(yàn)碼,在讀取存檔時(shí),進(jìn)行校驗(yàn)。如果原文修改,校驗(yàn)碼變化,則校驗(yàn)不通過。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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中專診斷學(xué)試題及答案
- 切實(shí)可行的成本控制策略
- 降低企業(yè)成本費(fèi)用策略與實(shí)踐
- 基層醫(yī)療衛(wèi)生機(jī)構(gòu)信息化建設(shè)中的信息化與醫(yī)療信息化技術(shù)發(fā)展趨勢(shì)實(shí)施報(bào)告2025
- 時(shí)尚零售快時(shí)尚模式人力資源變革研究報(bào)告2025
- 生態(tài)旅游可持續(xù)發(fā)展規(guī)劃與管理2025年生態(tài)旅游可持續(xù)發(fā)展規(guī)劃與旅游市場(chǎng)拓展策略研究
- 高速公路安全防護(hù)設(shè)施方案
- 2025年云南省事業(yè)單位招聘考試公共基礎(chǔ)知識(shí)沖刺試題卷
- 2025年中級(jí)機(jī)修鉗工(助理技師)考試試卷:機(jī)械加工精度
- 2025年注冊(cè)會(huì)計(jì)師考試審計(jì)案例模擬試卷
- 煙火表演光影效果研究-洞察分析
- 亞朵酒店施工方案
- 公共管理學(xué):理論、實(shí)踐與方法 課件匯 汪大海 第10-18章 綠色公共管理- 公共管理的變革
- 人工智能賦能教師數(shù)字素養(yǎng)提升
- T-CPPIA 44-2024 流延聚乙烯纏繞膜
- C919機(jī)組培訓(xùn)-導(dǎo)航系統(tǒng)
- 醫(yī)院四懂四會(huì)消防培訓(xùn)
- 保險(xiǎn)投訴處理培訓(xùn)
- 《星級(jí)酒店人力資源管理模式探究:以W酒店為例》12000字(論文)
- 小學(xué)三年級(jí)上冊(cè)數(shù)學(xué)(青島63)63計(jì)算題每日一練(無(wú)答案)
- 教師課堂管理行為多模態(tài)解碼:行為特征、分類識(shí)別與時(shí)序發(fā)展
評(píng)論
0/150
提交評(píng)論