iOS 中似乎有一些对 sqlite 加密的默认支持,但我找不到任何有关其工作原理的文档。在一个新的 iOS 项目中,我创建了一个新的 db 并key在创建表之前添加了编译指示。
import SQLite3
...
sqlite3_open_v2(docStr, &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil)
sqlite3_exec(db, "PRAGMA key = 'abc123';", nil, nil, nil)
sqlite3_exec(db, "CREATE TABLE Breed (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, favorite INTEGER NOT NULL DEFAULT 0 ); INSERT INTO Breed(name) VALUES ('Beagle');", nil, nil, nil);
Run Code Online (Sandbox Code Playgroud)
检查文件系统上的数据库,然后它似乎被加密了。正如我提到的,这是一个干净的项目,我没有添加 SQLCipher 或任何其他库。有没有办法知道使用 pragma 的扩展名/lib 以便我知道使用它是否有意义?
在 iPhone 11 模拟器上运行 iOS 13.2.2