我已经使用FMDB在Swift中创建SQLite数据库。但现在我想加密它。那么任何人都可以帮助我使用'FMDB/SQLCipher'加密和解密SQLite数据库的Swift版本吗?我无法找到一个很好的教程来理解这一点。如何在Swift中使用'FMDB/SQLCipher'进行加密和解密?
9
A
回答
0
根据此detailed tutorial,您必须使用Cocoapods加载正确的库和配置。本教程介绍了Objective-C的解决方案,但你可以在评论找个翻译斯威夫特:
var db: COpaquePointer = nil;
let databasePath = FileUtils.getPath(“app.db”)
var ecDB = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0].stringByAppendingPathComponent(“encrypted.sqlite”)
let result = String.fromCString(“ATTACH DATABASE \(ecDB) AS encrypted KEY TaP”)
if (sqlite3_open(databasePath, &db) == SQLITE_OK) {
// Attach empty encrypted database to unencrypted database
sqlite3_exec(db, result!, nil, nil, nil);
// export database
sqlite3_exec(db, “SELECT sqlcipher_export(‘encrypted’);”, nil, nil, nil);
// Detach encrypted database
sqlite3_exec(db, “DETACH DATABASE encrypted;”, nil, nil, nil);
sqlite3_close(db);
}
else {
sqlite3_close(db);
sqlite3_errmsg(db);
}
阅读detailed tutorial为完整的解释。
+0
我试过这个,但是当数据库被创建时它会崩溃。如果我在没有SCLCipher的情况下安装FMDB,那么一些代码可以正常工作。我使用Xcode 8和Swift 3。 – Salmo
相关问题
- 1. 如何在golang中使用rsa密钥对进行AES加密和解密
- 2. 在SWIFT中加密和解密
- 3. 如何使用StAX在xml中进行加密/解密?
- 4. 如何使用rsa c仅公钥进行加密和解密#
- 5. 在Linux内核中使用AES进行加密和解密
- 6. 在Android中使用AESCrypt进行加密和解密
- 7. 在C#中使用MD5CryptoServiceProvider进行加密和解密
- 8. 使用字典进行加密/解密
- 9. 如何在Sql Server 2005中进行加密和解密
- 10. 如何在C#中对字符串进行加密和解密#
- 11. 在JAVA中使用公共和私有RSA密钥进行加密和解密
- 12. 使用简单的替换密码进行加密和解密
- 13. 使用随机生成的密钥进行加密和解密?
- 14. 使用密钥文件进行加密,使用密码进行解密
- 15. 使用PGP进行加密并使用GPG进行解密
- 16. ZendFramework - 如何使用bin2hex和hex2bin使用Zend_Filter进行加密和解密?
- 17. 使用DES和密码进行加密
- 18. 使用CipherInputStream和CipherOutputStream对文件进行加密和解密
- 19. RSA:在iOS中进行加密,在Java中进行解密
- 20. 使用OpenSSL进行AES-256/CBC加密并在C#中解密
- 21. 在Botan库中使用XTS算法进行加密/解密
- 22. 使用Java 1.5和ActionScript进行AES加密/解密as3crypto
- 23. 使用mySQL进行PHP加密和解密
- 24. 目标c和C#之间使用AES128进行加密/解密
- 25. 使用Jasypt加密和解密密码
- 26. 如何对laravel进行加密和解密5.4.6类对象
- 27. 如何使用attr_encrypted和authlogic对用户数据进行解密/加密
- 28. 如何?在ASP.NET中加密和解密用户成员密码
- 29. 如何使用sqlite在iphone中加密和解密pashto语言
- 30. 如何使用密码和盐以这种方式进行AES加密,以便在Java中仅使用相同的密码和盐进行解密
您需要打开明文数据库并将其复制到加密的数据库中,然后删除明文,如SQLCipher文档中所述:https://discuss.zetetic.net/t/how-to-encrypt -a-plaintext-sqlite-database-to-use-sqlcipher-and-avoid-file-is-encrypted-or-is-not-a-database-errors/868我不知道fmdb,所以我不是能够为此操作提供任何API级别的指导。 – Palpatim
你能告诉,你如何添加FMDB框架?我想我可能会帮忙。 –