Cocoapods FMDB / SQLCipher 2.7.5 не может расшифровать - PullRequest
0 голосов
/ 19 декабря 2018

Я добавил 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];
  }
}
...