【问题标题】:sqlite encryption/decryption + sqlcipher + iPhonesqlite 加密/解密 + sqlcipher + iPhone
【发布时间】:2010-09-10 09:22:21
【问题描述】:

我一直在尝试在我的 iPhone 项目中加密/解密一个 sqlite 数据库。我可以使用 reKey 方法加密数据库。但我无法解密它。 我将我的 sqlite.db 文件保存在一个文件夹中。目前在模拟器上试用。

代码sn-p:

[[SQLiteDB sharedSQLiteDB] open:<path to the folder> withKey:@""];

[[SQLiteDB sharedSQLiteDB] reKey:@"abc"];

[[SQLiteDB sharedSQLiteDB] close];

[[SQLiteDB sharedSQLiteDB] open:<path to the folder> withKey:@"abc"];

[[SQLiteDB sharedSQLiteDB] reKey:@""];

.....

- (BOOL)open:(NSString *)path withKey:(NSString *)masterKey {

    if (sqlite3_open([path fileSystemRepresentation], &_db) != SQLITE_OK) {
        NSLog(@"SQLite Opening Error: %s", sqlite3_errmsg(_db));
        return NO;
    }

    if(masterKey)
        sqlite3_exec(_db, [[NSString stringWithFormat:@"PRAGMA key = '%@'", masterKey] UTF8String], NULL, NULL, NULL);

    if (sqlite3_exec(_db, (const char*) "SELECT count(*) FROM sqlite_master", NULL, NULL, NULL) != SQLITE_OK)
    {
        [self close];
        NSLog(@"SQLite Key Error!");
        return NO;
    }

    filePath = [path retain];
    return YES;
}

......

- (void)reKey:(NSString *)masterKey
{
    sqlite3_exec(_db, [[NSString stringWithFormat:@"PRAGMA rekey = '%@'", masterKey] UTF8String], NULL, NULL, NULL);

}

我已阅读 sqlcipher google 群组中有关此主题的帖子,但无法解密。任何帮助将不胜感激。

【问题讨论】:

    标签: iphone sqlite sqlcipher


    【解决方案1】:

    从邮件列表中回复:

    如果您尝试获取现有的未加密数据库,对其进行加密,然后再将其解密,我们推荐的方法不是使用 rekey,而是使用 ATTACHed 数据库在标准数据库和 sqlcipher 数据库之间复制数据.这里有更多信息和具体示例:

    http://www.zetetic.net/blog/2009/12/29/how-to-encrypt-a-plaintext-sqlite-database-to-use-sqlcipher/

    如果相反,您只是尝试使用 sqlcipher 来加密一般数据(即没有从预先存在的数据库转换),那么您只需要使用 sqlite3_key。您基本上只需打开数据库,提供密钥,然后进行 sql 调用。没有单独的加密/解密步骤——所有这些都由 sqlcipher 代码动态处理。在您之前发布的代码中,您根本不会调用 rekey。每次打开数据库时调用 PRAGMA 键,然后运行快速检查以确保 sqlite_master 是可读的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      相关资源
      最近更新 更多