首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlCipher不加密

SqlCipher不加密
EN

Stack Overflow用户
提问于 2011-04-29 19:15:14
回答 1查看 848关注 0票数 0

我没有得到编译错误,但我的数据库没有加密...

代码语言:javascript
复制
const char* key = [@"BIGSecret" UTF8String];
    int err = sqlite3_key(database, key, strlen(key));

    if (sqlite3_exec(database, (const char*) "SELECT count(*) FROM animals;", NULL, NULL, NULL) == SQLITE_OK) {
        // database has been initialized
    }

我指的是网站http://sqlcipher.net/documentation/ios和使用SQLiteTutorial的例子,其中已经有AnimalDatabase.sql数据库。

我还了解到加密在现有数据库上不起作用,所以我尝试了以下代码:

代码语言:javascript
复制
      - (void)encryptDB
    {
        NSLog (@"Start");
        sqlite3 *DB = [self getNewDBConnection];

        sqlite3_exec(DB, "ATTACH DATABASE AnimalDatabase.sql AS encrypted KEY 1234;", NULL, NULL,  NULL);

    sqlite3_exec(DB, "CREATE TABLE encrypted.Account(id,Name,Desc,Image);", NULL, NULL, NULL);
    sqlite3_exec(DB, "INSERT INTO encrypted.Account SELECT * FROM animals;", NULL, NULL, NULL);

    sqlite3_exec(DB, "DETACH DATABASE encrypted;", NULL, NULL, NULL);   
    NSLog (@"End");
    }

    - (sqlite3 *)getNewDBConnection{
        if (sqlite3_open([databasePath UTF8String], &newDBconnection) == SQLITE_OK) { // opening AnimalDatabase.sql

        NSLog(@"Database Successfully Opened :)");
    } else {
        NSLog(@"Error in opening database :(");
    } 
    return newDBconnection; 
} 

但还是没有成功。有人能帮上忙吗?

EN

回答 1

Stack Overflow用户

发布于 2011-05-17 23:45:49

最可能的问题是您没有将您的项目链接到SQLCipher静态库。因此,您的项目使用默认的系统SQLite框架。

进入你的项目构建设置,构建阶段,->链接二进制库,并确保libsqlcipher.a和libcrypt.a都列在那里。如果不是,则添加它们。然后清理项目和重建。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5831293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档