如何在 Swift 中使用“FMDB/SQLCipher”进行加密和解密?

Posted

技术标签:

【中文标题】如何在 Swift 中使用“FMDB/SQLCipher”进行加密和解密?【英文标题】:How to encrypt and decrypt using 'FMDB/SQLCipher' in Swift? 【发布时间】:2017-01-30 00:55:55 【问题描述】:

我使用 FMDB 在 Swift 中创建了一个 SQLite 数据库。但现在我想加密它。那么任何人都可以帮助我使用“FMDB/SQLCipher”加密和解密 SQLite 数据库的 Swift 版本吗?我找不到很好的教程来理解这一点。

【问题讨论】:

您需要打开明文数据库并将其复制到加密数据库,然后删除明文数据库,如 SQLCipher 文档中所述:discuss.zetetic.net/t/…我不知道 fmdb,所以我'无法为此操作提供任何 API 级别的指导。 你能告诉我,你是如何添加 FMDB 框架的吗?我想我可能会有所帮助。 【参考方案1】:

下面是一个示例代码,它在数据库上设置一个键,它是一个FMDatabase 对象。您必须使用setKey() 方法才能访问加密数据库。我还在 FMDB 库上编写了一个包装器,这将使您更轻松地处理加密数据库。

这里是:https://github.com/SagarSDagdu/SDDatabase/ 它还有大量的文档和示例代码。

func executeUpdate(onDatabase database:FMDatabase, withStatement statement:String, values: [Any]?) -> Bool 
    var success:Bool = false
    do 
        database.logsErrors = self.loggingEnabled
        if let key = self.dbPassKey  //Use your key here
            database.setKey(key)
        
        try database.executeUpdate(statement, values:values)
        success = true
    
    catch 
        print("Error in \(#function) with query: \(statement), error : \(error)")
    
    return success

【讨论】:

以上是关于如何在 Swift 中使用“FMDB/SQLCipher”进行加密和解密?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 kotlin native 中使用 swift 库?

如何在 Swift 中使用 Apple 地图 - 你必须使用 C 还是 Swift 可以?

如何在 Swift 中使用 MKPolylineView

如何在 Swift 中使用`syslog`

如何在 swift 项目中使用 TPKeyboardAvoiding?

如何在 Playground 中使用 Swift 包管理器