2016-09-21 9 views
9

Użyłem FMDB do utworzenia bazy danych SQLite w Swift. Ale teraz chcę je zaszyfrować. Czy ktoś może mi pomóc w wersji Swift szyfrowania i odszyfrowywania bazy danych SQLite za pomocą "FMDB/SQLCipher"? Nie mogłem znaleźć dobrego samouczka, aby to zrozumieć.Jak szyfrować i odszyfrowywać za pomocą "FMDB/SQLCipher" w Swift?

+0

Musisz otworzyć bazę danych z tekstem otwartym i skopiować ją do zaszyfrowanej, a następnie usunąć tekst w postaci zwykłego tekstu, jak opisano w dokumentach SQLCipher: https://discuss.zetetic.net/t/how-to-encrypt -a-zwykły tekst-sqlite-baza danych-do-użycia-sqlcipher-i-unikanie-pliku-jest-zaszyfrowane-lub-nie-bazy danych-błędy/868 Nie znam fmdb, więc nie jestem w stanie zapewnić wskazówki na poziomie interfejsu API dla tej operacji. – Palpatim

+0

Czy możesz powiedzieć, w jaki sposób dodałeś framework FMDB? Myślę, że mógłbym pomóc. –

Odpowiedz

0

Zgodnie z tym detailed tutorial należy użyć Cocoapods, aby załadować odpowiednie biblioteki i konfigurację. Tutorial opisuje rozwiązanie Objective-C, ale można znaleźć w komentarzach tłumaczenie w Swift:

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); 
} 

Przeczytaj detailed tutorial dla pełnych wyjaśnień.

+0

Próbowałem tego, ale awarie, gdy baza danych zostanie utworzona. Część kodu działa dobrze, jeśli zainstaluję FMDB bez SCLCipher. Używam Xcode 8 i Swift 3. – Salmo

Powiązane problemy