2016-09-21 6 views
9

나는 FMDB를 사용하여 Swift에서 SQLite 데이터베이스를 만들었습니다. 하지만 지금은 그것을 암호화하고 싶습니다. 그래서 누구도 'FMDB/SQLCipher'를 사용하여 SQLite 데이터베이스를 암호화하고 암호 해독하는 Swift 버전을 도와 주실 수 있습니까? 나는 이것을 이해하기 위해 좋은 튜토리얼을 찾을 수 없었다.Swift에서 'FMDB/SQLCipher'를 사용하여 암호화하고 해독하는 방법은 무엇입니까?

+0

일반 텍스트 데이터베이스를 열고 암호화 된 데이터베이스로 복사 한 다음 SQLCipher 문서에 설명 된대로 일반 텍스트 데이터베이스를 삭제해야합니다. https://discuss.zetetic.net/t/how-to-encrypt -a-plaintext-sqlite-database-to-use-sqlcipher-and-avoid-file-is-encrypted-or-not-a-database-errors/868 나는 fmdb를 모른다. 이 작업을 위해 API 수준의 지침을 제공 할 수 있습니다. – Palpatim

+0

FMDB 프레임 워크를 어떻게 추가했는지 알 수 있습니까? 나는 내가 도울 것 같아. –

답변

0

detailed tutorial에 따르면 올바른 라이브러리 및 구성을로드하려면 Cocoapods을 사용해야합니다. 튜토리얼은 오브젝티브 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