我一直在試圖加密/解密我的iPhone項目中的sqlite數據庫。我能夠通過使用reKey方法來加密數據庫。但我無法解密它。 我已將我的sqlite.db文件保存在一個文件夾中。目前正在模擬器上嘗試它。sqlite加密/解密+ sqlcipher + iPhone
代碼片段:
[[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谷歌團體,但我無法解密它。任何幫助將不勝感激。
謝謝,第一種方法在我的情況下工作。 – random 2010-09-15 09:31:14