-1
SQLCIPHER sqlite encrypted iphone ios converting un-encrypted database to encrypted database
[fmdb open];
       NSString *sel = @"SELECT count(*) FROM sqlite_master";            
       FMResultSet *fmr = [self executeQuery : fmdb : sel];

        if ( [fmr next] ) // unencrypted
        {
            NSLog(@"Encrypting");
            fmdb.key = @"";
            [fmdb rekey : @"somekey"];
        }

- (BOOL)rekey:(NSString*)key {
    #ifdef SQLITE_HAS_CODEC
    if (!key) {
        return NO;
    }

    int rc = sqlite3_rekey(db, [key UTF8String], (int)strlen([key UTF8String]));

    if (rc != SQLITE_OK) {
        NSLog(@"error on rekey: %d", rc);
        NSLog(@"%@", [self lastErrorMessage]);
    }

    return (rc == SQLITE_OK);
    #else
        return NO;
    #endif
   }

我正在尝试将 1)FMDB Pod 2)SQLCipher pod 与 Rubymotion iOS 项目一起使用。

我正在尝试使用 SQLCipher 加密数据库,但 Rubymotion 无法识别 SQLCipher 提供的方法。

我发现了下面提到的一段代码,人们报告说它在 Objective C 和 xcode 中运行。

有人可以将其转换为 Rubymotion 吗?

4

1 回答 1

0

我认为您不需要将其转换为 RubyMotion。您可以从 RubyMotion 调用此 FMDB 代码,例如

class Database
  def self.connection
    unless @connection
      @connection = FMDatabase.databaseWithPath(db_path)
      @connection.traceExecution = true if $debug
      @connection.open
      @connection.setKey 'MySecretKey'
    end
  end
end 

请参阅我在Using FMDB + SQLCipher with Rubymotion 中的回答?

于 2013-01-22T19:26:36.197 回答