cocos rc4加解密
来源:互联网 发布:java jdk7 64位 linux 编辑:程序博客网 时间:2024/04/28 13:18
static Data getData(const std::string& filename, bool forString){ if (filename.empty()) { return Data::Null; } Data ret; unsigned char* buffer = nullptr; size_t size = 0; size_t readsize; const char* mode = nullptr; if (forString) mode = "rt"; else mode = "rb"; auto fileutils = FileUtils::getInstance(); do { // Read the file from hardware std::string fullPath = fileutils->fullPathForFilename(filename); FILE *fp = fopen(fileutils->getSuitableFOpen(fullPath).c_str(), mode); CC_BREAK_IF(!fp); fseek(fp,0,SEEK_END); size = ftell(fp); fseek(fp,0,SEEK_SET); if (forString) { buffer = (unsigned char*)malloc(sizeof(unsigned char) * (size + 1)); buffer[size] = '\0'; } else { buffer = (unsigned char*)malloc(sizeof(unsigned char) * size); } readsize = fread(buffer, sizeof(unsigned char), size, fp); fclose(fp); if (forString && readsize < size) { buffer[readsize] = '\0'; } } while (0); if (nullptr == buffer || 0 == readsize) { CCLOG("Get data from file %s failed", filename.c_str()); } else {#ifdef CRYPT_RES pack_crpyt( buffer, (unsigned long )readsize );#endif ret.fastSet(buffer, readsize); } return ret;}bool AppDelegate::applicationDidFinishLaunching(){ char key[256]={"hellodytqwe123!@#&*"}; pack_crpyt_init( (unsigned char*)key, strlen( key ) ); // set default FPS Director::getInstance()->setAnimationInterval(1.0 / 60.0f); Director::getInstance()->setClearColor(Color4F(0, 0, 0, 0)); // register lua module auto engine = LuaEngine::getInstance(); ScriptEngineManager::getInstance()->setScriptEngine(engine); lua_State* L = engine->getLuaStack()->getLuaState(); lua_module_register(L); register_all_packages(); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) register_all_cocos2dx_TalkingDataGA(L); register_all_cocos2dx_TDGAAccount(L); register_all_cocos2dx_TDGAMission(L); register_all_cocos2dx_TDGAVirtualCurrency(L); register_all_cocos2dx_TDGAItem(L);#endif LuaStack* stack = engine->getLuaStack(); stack->setXXTEAKeyAndSign("2dxLua", strlen("2dxLua"), "XXTEA", strlen("XXTEA")); //register custom function //LuaStack* stack = engine->getLuaStack(); //register_custom_function(stack->getLuaState()); auto state = engine->getLuaStack()->getLuaState(); if ( state ) { lua_getglobal( state , "_G"); register_all_cocos2dx_custom( state ); register_all_cocos2dx_custom_manual( state ); lua_settop( state , 0); }#if (COCOS2D_DEBUG > 0) && (CC_CODE_IDE_DEBUG_SUPPORT > 0) std::vector<std::string> searchDirs ; searchDirs.push_back( "" ); searchDirs.push_back( "res" ); searchDirs.push_back( "src" ); cocos2d::FileUtils::getInstance()->setSearchPaths( searchDirs ); Cocos2dUtils::getOrCreateGLProgram( "res/shader/highlight.vsh", "res/shader/highlight.fsh" ); // NOTE:Please don't remove this call if you want to debug with Cocos Code IDE auto runtimeEngine = RuntimeEngine::getInstance(); runtimeEngine->addRuntime(RuntimeLuaImpl::create(), kRuntimeEngineLua); runtimeEngine->start();#else std::vector<std::string> searchDirs ; searchDirs.push_back( "" ); searchDirs.push_back( "res" ); searchDirs.push_back( "src" ); cocos2d::FileUtils::getInstance()->setSearchPaths( searchDirs ); Cocos2dUtils::getOrCreateGLProgram( "res/shader/highlight.vsh", "res/shader/highlight.fsh" ); if (engine->executeScriptFile("src/main.lua")) { return false; }#endif return true;}Data FileUtils::getDataFromFile(const std::string& filename){ return getData(filename, false);}void Cocos2dUtils::readBufferFromFile( ByteBuffer* buffer, const std::string fileName ){ Data data = FileUtils::getInstance()->getDataFromFile( fileName ); if( data.getSize() > 0 ) { buffer->writeBytes( ( char* )data.getBytes(), data.getSize() ); }}//// RC4.h// knight//// Created by yingtuodeng on 14-6-29.////#ifndef __knight__RC4__#define __knight__RC4__/* 初始化函数 参数1是一个256长度的char型数组,定义为: unsigned char sBox[256]; 参数2是密钥,其内容可以随便定义:char key[256]; 参数3是密钥的长度,Len = strlen(key); */void rc4_init(unsigned char*s,unsigned char*key,unsigned long Len);/*加解密 其中,参数1是上边rc4_init函数中,被搅乱的S-box; 参数2是需要加密的数据data; 参数3是data的长度. */void rc4_crypt(unsigned char*s,unsigned char*Data,unsigned long Len);void pack_crpyt( unsigned char* data, unsigned long len );void pack_crpyt_init( unsigned char* key, unsigned long key_len );#endif /* defined(__knight__RC4__) */#include "RC4.h"#include <string>/* 初始化函数 参数1是一个256长度的char型数组,定义为: unsigned char sBox[256]; 参数2是密钥,其内容可以随便定义:char key[256]; 参数3是密钥的长度,Len = strlen(key); */void rc4_init(unsigned char*s,unsigned char*key,unsigned long Len){ int i=0,j=0; char k[256]={0}; unsigned char tmp=0; for(i=0;i<256;i++) { s[i]=i; k[i]=key[i%Len]; } for(i=0;i<256;i++) { j=(j+s[i]+k[i])%256; tmp=s[i]; s[i]=s[j];//交换s[i]和s[j] s[j]=tmp; }}/*加解密 其中,参数1是上边rc4_init函数中,被搅乱的S-box; 参数2是需要加密的数据data; 参数3是data的长度. */void rc4_crypt(unsigned char*s,unsigned char*Data,unsigned long Len){ int i=0,j=0,t=0; unsigned long k=0; unsigned char tmp; for(k=0;k<Len;k++) { i=(i+1)%256; j=(j+s[i])%256; tmp=s[i]; s[i]=s[j];//交换s[x]和s[y] s[j]=tmp; t=(s[i]+s[j])%256; Data[k]^=s[t]; }}unsigned char __g_rc4_sBox[ 256 ] = { 0 };void pack_crpyt( unsigned char* data, unsigned long len ){ char sbox[256]; memcpy( sbox, __g_rc4_sBox, 256 ); rc4_crypt( (unsigned char*)sbox , data, len );}void pack_crpyt_init( unsigned char* key, unsigned long key_len ){ rc4_init( __g_rc4_sBox, key, key_len );}
0 0
- cocos rc4加解密
- RC4加解密算法
- RC4加解密算法
- RC4加解密
- java RC4加解密
- RC4 加解密
- LoadRunner RC4加解密
- OpenSSL之RC4加解密
- RC4的加解密原理
- iOS RC4加解密算法
- python版本rc4加解密
- PHP RC4 加解密类
- OpenSSL中RC4加解密过程调研
- python 类版本rc4加解密
- Linux下RC4算法的多线程加解密
- RC4加密解密
- php--rc4加密解密
- java RC4加密解密
- sql注入工具
- POJ 2182 Lost Cows树状数组
- Hadoop HDFS清空回收站
- 好的github项目地址
- Android开机启动流程
- cocos rc4加解密
- Java 线程安全
- 深度学习GPU环境搭建:ubuntu16.04+GTX1070+Cuda8.0+tensorflow build from source
- 代码注释里的祈祷
- Difference between HTML control and Web Server control
- Composite模式(组合模式 结构型)
- JavaEE程序猿之接口和抽象类(22)
- markdown编辑器用法
- iOS的多版本配置(版本分离,多环境配置)