cocos2d x學習筆記:使用摘要算法進記錄存儲_第1頁
cocos2d x學習筆記:使用摘要算法進記錄存儲_第2頁
cocos2d x學習筆記:使用摘要算法進記錄存儲_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

cocos2d-x學習筆記:使用摘要算法進記錄存儲本文將探討如何使用摘要算法進行存檔校驗的方法。

準備工作摘要算法很多,算法內容都是公開的。所以網絡上有很多現(xiàn)成的算法庫,最有名的是Crypto++,該庫支持大量對稱加密,非對稱加密,和摘要算法。不過這庫太龐大了,我們只是用一個簡單的摘要算法,就先不用這玩意了。我選擇了SHA1,打開后發(fā)現(xiàn)非常簡潔,只有兩個源代碼(sha1.cpp,sha1.h),還有一個是測試代碼(testsha1.cpp)。我們先新建一個工程名為TestSha,然后把源代碼導入。然后為了方便調試,我們需要printf,cocos2d-x中打開printf的方法如下:在代理函數boolAppDelegate::applicationDidFinishLaunching()里開頭添加以下代碼:_tsetlocale(LC_ALL,_T(""));::AllocConsole();::freopen("conout$","w",stdout);別忘了加頭文件#include<tchar.h>然后你就可以使用printf啦,哇咔咔。

如何用SHA1做存檔校驗我們使用如下代碼寫入存儲記錄#defineTEXT1"teststring"#defineKEY"goldlion"SHA1*sha1;unsignedchar*digest;CCUserDefault*save=CCUserDefault::sharedUserDefault();save->setStringForKey("string_value",TEXT1);sha1=newSHA1;sha1->addBytes(TEXT1,strlen(TEXT1));//輸入數據sha1->addBytes(KEY,strlen(KEY));//輸入數據digest=sha1->getDigest();//獲取校驗碼SHA1::hexPrinter(digest,20);//打印16進制校驗碼到控制臺printf("\n");deletesha1;free(digest);現(xià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());//輸入數據sha1->addBytes(KEY,strlen(KEY));//輸入數據digest=sha1->getDigest();//獲取校驗碼SHA1::hexPrinter(digest,20);//打印16進制校驗碼到控制臺printf("\n");deletesha1;free(digest);可以看到,校驗是沒有問題的破解測試現(xiàn)在我們手動修改存檔文件UserDefault.xml,將string_value的值修改為teststringcrack。校驗不通過,玩家修改了存檔。思路1.摘要算法即從原文中提取校驗碼,在讀取存檔時,進行校驗。如果原文修改,校驗碼變化,則校驗不通過。2.因為摘要算法都是公開的,在使用時,我們會在輸入待校驗數據時,多輸入一個key,這個key是隱藏在編碼中的,除非玩家有很高超逆向工程技術,能反編并找到key,但我們一樣可以調整Key的算法,以及提前對數據樣本進行混淆。這種加密強度足以應付一般單機游戲的開發(fā)了。網游存檔是在服務器端的,而且需要傳輸校驗,所以我們也不考慮本地存檔加密了。實際中的使用以上只是演示代碼,在實際使用時,我們還需注意:1.為了方便,演示中我只使用了字符串,對于bool,int等類型,你可以自己封裝函數,進行校驗,這樣比較方便。2.在編寫的校驗代碼中,增加一個開關——隨時打開和關閉校驗。這樣做的好處是,在校驗關閉狀態(tài),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論