Я добавил FMDB / SQLCipher (2.7.5) в свое приложение с помощью cocoapods.
use_frameworks!
pod 'FMDB/SQLCipher'
И выполним код, приведенный ниже:
- (void)decryptDBAtPath:(NSString *)path withKey:(NSString *)key {
FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:path];
[queue inTransaction:^(FMDatabase * _Nonnull db, BOOL * _Nonnull rollback) {
BOOL result = [db setKey:key];
NSLog(@"decrypt db %@", result ? @"success" : @"failed");
//it always return YES.
NSString *sql = @"SELECT * FROM PTypeImage";
FMResultSet *rs = [db executeQuery:sql];
NSDictionary *dic = [rs resultDictionary];
NSLog(@"query test with result : %@", dic);
//query can not by executed. 'file is not a database'.
}];
}
Это всегда возвращает успех расшифровки, но запрос не выполнен.Что-то не так в моем коде?
Я также пробовал шифрование с помощью FMDB.Кажется, не удалось.Возвращает зашифрованный успех, но может быть открыт без ключа.
- (void)enryptDBAtPath:(NSString *)path withKey:(NSString *)key {
FMDatabase *db = [FMDatabase databaseWithPath:path];
if ([db open]) {
BOOL result = [db rekey:key];
//always return YES.
NSLog(@"encrypt db %@", result ? @"success" : @"failed");
[db close];
}
}