cocos2dx引擎中lua使用加密sqlite数据库
2014-02-27 15:28
537 查看
倒腾了两天终于能在cocos2dx的lua脚本中操作加密版的sqlite数据库了。趁还没忘记,赶紧记录一下步骤
用到的资源:
cocos2dx 3.0 beta2
lua 5.1
wxsqlite3 V3.0.6(内含编译好的sqlite 3.8.2)
LuaSQLite3 V0.9.1
sqlitebrowser
步骤:
一、替换cocos2dx自带的sqlite3为加密的sqlite3
1) 解压wxsqlite3。
2)将目录wxsqlite3-3.0.6\sqlite3\secure\aes128\dll\release下的sqlite3.dll和sqlite3.lib拷贝到
游戏工程根目录\cocos2d\external\sqlite3\libraries\win32,覆盖原文件。
3)将目录wxsqlite3-3.0.6\sqlite3\secure\src下的所有源文件拷贝到
游戏工程根目录\cocos2d\external\sqlite3\include,覆盖原文件
二、使lua可以操作sqlite3
1)解压LuaSQLite3
2)在游戏工程根目录\cocos2d\cocos\scripting\lua\bindings下创建一个文件夹(lsqlite3)
3)将LuaSQLite3解压目录中的lsqlite3.c文件拷贝到上边创建的lsqlite3文件夹内
4)新建lsqlite3.h头文件,放到上边创建的lsqlite3文件夹内,lsqlite3.h文件的内容如下,
5)修改lsqlite3.c文件,包含lsqlite3.h头文件,并修改了lsqlite3.c中包含sqlite3.h头文件的路径
6)打开游戏工程,定位到LibLua项目,然后将lsqlite3.h、lsqlite3.c和cocos2d\external\sqlite3\include\sqlite3secure.c这3个文件添加到LibLua项目
最好在项目中新建两个文件夹筛选器分别存放上边三个文件
7)修改LibLua的项目属性,添加以下预处理
SQLITE_HAS_CODEC=1
CODEC_TYPE=CODEC_TYPE_AES128
SQLITE_CORE
THREADSAFE
SQLITE_SECURE_DELETE
SQLITE_SOUNDEX
SQLITE_ENABLE_COLUMN_METADATA
8)修改LibLua项目中lua_extensions.c文件,添加包含lsqlite3.h和注册lsqlite3
代码修改前:
代码修改后:
使用方法:
修改lsqlite3.c文件的lsqlite_do_open函数
在打开数据库后用函数sqlite3_key(数据库指针,密码,密码长度)函数加密数据库
测试:
将lsqlite3解压包中的test目录中的test.lua拷贝到游戏Resource目录,然后修改游戏代码使其执行test.lua文件,
如果成功执行并打印信息,生成test.db则证明可以操作数据库了,再用sqlitebrowser打开test.db,如果不能打开
则说明加密成功。
参考
SQLite加密 wxSqlite3http://blog.sina.com.cn/s/blog_648d306d0101jzfc.html
cocos2d-x 2.1 Win32+Android开发中的sqlite数据库加密技术探讨 http://blog.itpub.net/14466241/viewspace-752718/
参考:
用到的资源:
cocos2dx 3.0 beta2
lua 5.1
wxsqlite3 V3.0.6(内含编译好的sqlite 3.8.2)
LuaSQLite3 V0.9.1
sqlitebrowser
步骤:
一、替换cocos2dx自带的sqlite3为加密的sqlite3
1) 解压wxsqlite3。
2)将目录wxsqlite3-3.0.6\sqlite3\secure\aes128\dll\release下的sqlite3.dll和sqlite3.lib拷贝到
游戏工程根目录\cocos2d\external\sqlite3\libraries\win32,覆盖原文件。
3)将目录wxsqlite3-3.0.6\sqlite3\secure\src下的所有源文件拷贝到
游戏工程根目录\cocos2d\external\sqlite3\include,覆盖原文件
二、使lua可以操作sqlite3
1)解压LuaSQLite3
2)在游戏工程根目录\cocos2d\cocos\scripting\lua\bindings下创建一个文件夹(lsqlite3)
3)将LuaSQLite3解压目录中的lsqlite3.c文件拷贝到上边创建的lsqlite3文件夹内
4)新建lsqlite3.h头文件,放到上边创建的lsqlite3文件夹内,lsqlite3.h文件的内容如下,
#ifndef __LSQLITE3_H__ #define __LSQLITE3_H__ #include "lauxlib.h" LUALIB_API int luaopen_lsqlite3(lua_State *L); #endif
5)修改lsqlite3.c文件,包含lsqlite3.h头文件,并修改了lsqlite3.c中包含sqlite3.h头文件的路径
6)打开游戏工程,定位到LibLua项目,然后将lsqlite3.h、lsqlite3.c和cocos2d\external\sqlite3\include\sqlite3secure.c这3个文件添加到LibLua项目
最好在项目中新建两个文件夹筛选器分别存放上边三个文件
7)修改LibLua的项目属性,添加以下预处理
SQLITE_HAS_CODEC=1
CODEC_TYPE=CODEC_TYPE_AES128
SQLITE_CORE
THREADSAFE
SQLITE_SECURE_DELETE
SQLITE_SOUNDEX
SQLITE_ENABLE_COLUMN_METADATA
8)修改LibLua项目中lua_extensions.c文件,添加包含lsqlite3.h和注册lsqlite3
代码修改前:
// socket #include "socket/luasocket.h" #include "socket/mime.h" #include "socket/socket_scripts.h" static luaL_Reg luax_exts[] = { {"socket.core", luaopen_socket_core}, {"mime.core", luaopen_mime_core}, {NULL, NULL} };
代码修改后:
// socket #include "socket/luasocket.h" #include "socket/mime.h" #include "socket/socket_scripts.h" #include "lsqlite3/lsqlite3.h" static luaL_Reg luax_exts[] = { {"socket.core", luaopen_socket_core}, {"mime.core", luaopen_mime_core}, {"lsqlite3", luaopen_lsqlite3}, {NULL, NULL} };
使用方法:
修改lsqlite3.c文件的lsqlite_do_open函数
在打开数据库后用函数sqlite3_key(数据库指针,密码,密码长度)函数加密数据库
if (sqlite3_open(filename, &db->db) == SQLITE_OK) { /* database handle already in the stack - return it */ if (sqlite3_key(db->db, "abc123", 6) != SQLITE_OK) { /* database handle already in the stack - return it */ return 0; } return 1; }
测试:
将lsqlite3解压包中的test目录中的test.lua拷贝到游戏Resource目录,然后修改游戏代码使其执行test.lua文件,
如果成功执行并打印信息,生成test.db则证明可以操作数据库了,再用sqlitebrowser打开test.db,如果不能打开
则说明加密成功。
参考
SQLite加密 wxSqlite3http://blog.sina.com.cn/s/blog_648d306d0101jzfc.html
cocos2d-x 2.1 Win32+Android开发中的sqlite数据库加密技术探讨 http://blog.itpub.net/14466241/viewspace-752718/
参考:
相关文章推荐
- 【COCOS2DX-LUA 脚本开发之九】使用cocos2dx-LuaProxy便捷Lua项目快速使用cocos2dx引擎extensions扩展包
- cocos2dx是怎么使用lua引擎的
- cocos2dx 使用Luajit将Lua脚本编译为bytecode,从而实现加密
- 使用cocos2dx-LuaProxy便捷Lua项目快速使用cocos2dx引擎extensions扩展包
- [cocos2dx]cocos2dx3.x+lua中使用物理引擎
- 【COCOS2DX-LUA 脚本开发之九】使用cocos2dx-LuaProxy便捷Lua项目快速使用cocos2dx引擎extensions扩展包
- 【COCOS2DX-LUA 脚本开发之九】使用cocos2dx-LuaProxy便捷Lua项目快速使用cocos2dx引擎extensions扩展包
- lua教程九---使用cocos2dx-LuaProxy便捷Lua项目快速使用cocos2dx引擎extensions扩展包
- cocos2dx 2.x版本:简化提炼tolua++绑定自定义类到lua中使用
- cocos2dx-3.0 中的物理引擎Box2D使用(一)
- cocos2dx lua 使用总结 及 lua 知识点总结
- mac下使用zerobrane调试cocos2dx的lua
- cocos2dx 2.x版本:简化提炼tolua++绑定自定义类到lua中使用
- Cocos2dx-Lua与C++混合使用
- cocos2dx lua 3.10 使用cjson
- cocos2dx使用lua和protobuf
- cocos2dx 3.x以上版本 lua中使用protobuf
- Cocos2d-x使用Luajit将Lua脚本编译成bytecode,启用加密
- 使用C#作为Cocos2dx引擎脚本语言进行游戏开发——脚本运行时基础(二)
- Android使用SQLCipher对SQLite数据库进行加密