資源簡(jiǎn)介
高性能的內(nèi)存加密類(lèi)庫(kù),主要可用于各種游戲的內(nèi)存加密,防止用戶(hù)修改游戲數(shù)據(jù)從而影響游戲的平衡性。 可用于Unity游戲項(xiàng)目,集成簡(jiǎn)單,使用方便。集成后基本無(wú)需修改原來(lái)的代碼邏輯,僅需要將變量聲明中的int改為EncryptInt,float改為EncryptFloat……,支持int,float,...
代碼片段和文件信息
/****************************************************************************
Copyright?(c)?home
home_498@163.com
Permission?is?hereby?granted?free?of?charge?to?any?person?obtaining?a?copy
of?this?software?and?associated?documentation?files?(the?“Software“)?to?deal
in?the?Software?without?restriction?including?without?limitation?the?rights
to?use?copy?modify?merge?publish?distribute?sublicense?and/or?sell
copies?of?the?Software?and?to?permit?persons?to?whom?the?Software?is
furnished?to?do?so?subject?to?the?following?conditions:
The?above?copyright?notice?and?this?permission?notice?shall?be?included?in
all?copies?or?substantial?portions?of?the?Software.
THE?SOFTWARE?IS?PROVIDED?“AS?IS“?WITHOUT?WARRANTY?OF?ANY?KIND?EXPRESS?OR
IMPLIED?INCLUDING?BUT?NOT?LIMITED?TO?THE?WARRANTIES?OF?MERCHANTABILITY
FITNESS?FOR?A?PARTICULAR?PURPOSE?AND?NONINFRINGEMENT.?IN?NO?EVENT?SHALL?THE
AUTHORS?OR?COPYRIGHT?HOLDERS?BE?LIABLE?FOR?ANY?CLAIM?DAMAGES?OR?OTHER
LIABILITY?WHETHER?IN?AN?ACTION?OF?CONTRACT?TORT?OR?OTHERWISE?ARISING?FROM
OUT?OF?OR?IN?CONNECTION?WITH?THE?SOFTWARE?OR?THE?USE?OR?OTHER?DEALINGS?IN
THE?SOFTWARE.
****************************************************************************/
using?System;
namespace?home.MemoryEncrypt
{
????public?class?MemoryCheatException?:?Exception
????{
????????
????}
????class?MemoryEncrypt
????{
????????private?static?int?key;
????????private?static?long?longKey;
????????private?static?int?checkKey;
????????private?static?long?checkLongKey;
????????static?MemoryEncrypt()
????????{
????????????var?r?=?new?Random();
????????????key?=?r.Next(0x10000000?int.MaxValue);
????????????longKey?=?((long)key?<32)?+?key;
????????????checkKey?=?r.Next(0x10000000?int.MaxValue);
????????????checkLongKey?=?((long)checkKey?<32)?+?checkKey;
????????}
????????public?static?void?Do(int?value?out?int?val?out?int?check)
????????{
????????????val??=?value?^?key;
????????????check?=?value?^?checkKey;
????????}
????????public?static?int?UnDo(int?val?int?check)
????????{
????????????val??^=?key;
????????????check?^=?checkKey;
????????????if?(val?==?check)
????????????{
????????????????return?val;
????????????}
????????????throw?new?MemoryCheatException();
????????}
????????public?static?void?Do(long?value?out?long?val?out?long?check)
????????{
????????????val??=?value?^?longKey;
????????????check?=?value?^?checkLongKey;
????????}
????????public?static?long?UnDo(long?val?long?check)
????????{
????????????val??^=?longKey;
????????????check?^=?checkLongKey;
????????????if?(val?==?check)
????????????{
????????????????return?val;
????????????}
????????????throw?new?MemoryCheatException();
????????}
????????public?static?void?Do(float?value?out?int?val?out?int?check)
????????{
????????????val?=?BitConverter.ToInt32(BitConverter.GetBytes(value)?0)?^?key;
????????????check?=?BitConverter.ToInt32(BitConverter.GetBytes(valu
評(píng)論
共有 條評(píng)論