2016-09-21 25 views
9

私はスウィフトにSQLiteデータベースを作成するためにFMDBを使用しています。しかし、今私はそれを暗号化したい。誰でも、 'FMDB/SQLCipher'を使ってSQLiteデータベースの暗号化と解読のSwift版を手伝ってもらえますか?私はこれを理解する良いチュートリアルを見つけることができませんでした。Swiftで 'FMDB/SQLCipher'を使用して暗号化および復号化する方法は?

+0

:https://discuss.zetetic.net/t/how-to-encrypt -a-平文-sqliteのデータベースに使用-sqlcipher-と-回避-ファイル暗号化され、または-ではなく、データベース・エラー/ 868 IはFMDBを知らないので、私はありませんよこの操作のAPIレベルのガイダンスを提供することができます。 – Palpatim

+0

FMDBフレームワークをどのように追加したのですか?私は助けるかもしれないと思う。 –

答えて

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をお読みください。

あなたはSQLCipherドキュメントで説明したように、平文のデータベースを開き、暗号化されたものに、それをコピーし、その後、平文1を削除する必要があります
+0

私はこれを試しましたが、データベースが作成されるとクラッシュします。私はSCLCipherなしでFMDBをインストールすると、いくつかのコードは正常に動作します。私はXcode 8とSwift 3を使用しています。 – Salmo

関連する問題