【发布时间】:2014-02-06 18:37:20
【问题描述】:
我正在开发一个MFC 应用程序,我必须使用iOS 应用程序的sqlite 数据库。
iOS 数据库使用称为sqlite3_key() 的SQLite API 进行加密。
但是当我尝试在我的 MFC 应用程序中打开 iOS 的同一个数据库时,它会抛出异常提示 文件已加密或不是数据库 并且无法从数据库中读取数据。
MFC 应用程序将从Dropbox 下载iOS 数据库,并将替换当前数据库并使用它而不是以前的数据库
我正在使用以下代码打开数据库,使用CppSqlite3 Wrapper 为Sqlite:
CppSQLite3DB db;
try{
db.open("mydb.db");
TRACE(_T("database opened"));
db.key("1234", strlen("1234"));
}catch(CppSQLite3Exception e){
return NULL;
}
由于CppSQLite3DB 类没有名为key() 的函数。我已经在类中添加了该功能
void CppSQLite3DB::key(const char* szKey, int nKey)
{
if (mpDB)
{
sqlite3_key(mpDB, szKey, nKey);
}
}
并将我的库升级到SQLiteEncrypt。
而iOS 应用程序将SQLCipher 用于Database。
但是,结果是一样的。所以, 谁能告诉我如何做到这一点?
在此先感谢您。
【问题讨论】:
-
你确定打开后设置密钥正确吗?
-
是的,因为
iOS数据库是用密钥加密的,要使用它,我必须为数据库设置密钥。 -
CppSQLite3DB 类似乎没有任何与
sqlite3_key()对应的方法(这不是standard SQLite API 的一部分。)我认为您需要@987654349 的扩展版本@支持加密。 -
@nodakai 我已经编辑了我的问题解释。
-
那最好问问the vendor,因为我在他们的网站上找不到跨操作系统的可移植性保证。
标签: c++ database sqlite ios5 mfc