나는 FMDB를 사용하여 Swift에서 SQLite 데이터베이스를 만들었습니다. 하지만 지금은 그것을 암호화하고 싶습니다. 그래서 누구도 'FMDB/SQLCipher'를 사용하여 SQLite 데이터베이스를 암호화하고 암호 해독하는 Swift 버전을 도와 주실 수 있습니까? 나는 이것을 이해하기 위해 좋은 튜토리얼을 찾을 수 없었다.Swift에서 'FMDB/SQLCipher'를 사용하여 암호화하고 해독하는 방법은 무엇입니까?
9
A
답변
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
일반 텍스트 데이터베이스를 열고 암호화 된 데이터베이스로 복사 한 다음 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
FMDB 프레임 워크를 어떻게 추가했는지 알 수 있습니까? 나는 내가 도울 것 같아. –