美文网首页
SQLite对本地数据库加解密

SQLite对本地数据库加解密

作者: younger_times | 来源:发表于2023-04-12 09:26 被阅读0次

    场景: 在iOS或安卓中,内置本地数据库可以提高使用的体验感,离线部分数据,但这些数据可能属于敏感数据,通过砸壳、逆向等方式可以窃取数据库并造成数据库的泄漏。

    sqlcipher的安装【Mac】

    Sqlcipher安装方式>>>
    documentation

    brew install sqlcipher
    

    进入本地数据库所在目录

    sqlcipher plaintext.db
    

    加密

    sqlite> ATTACH DATABASE 'encrypted.db' AS encrypted KEY 'testkey';
    sqlite> SELECT sqlcipher_export('encrypted');
    sqlite> DETACH DATABASE encrypted;
    

    解密

    sqlcipher encrypted.db
    
    sqlite> PRAGMA key = 'testkey';
    sqlite> ATTACH DATABASE 'plaintext.db' AS plaintext KEY '';  -- empty key will disable encryption
    sqlite> SELECT sqlcipher_export('plaintext');
    sqlite> DETACH DATABASE plaintext;
    

    iOS:SQLite.swift的运用

    SQLite Doc

    pod 'SQLite.swift/SQLCipher'
    

    注意:pod 'SQLite.swift'pod 'SQLite.swift/SQLCipher'如果同时引用会引起错误,引入 SQLite.swift/SQLCipher即可。

    参考sqlcipher先外部进行加密后,导入至项目中

    import SQLite
    
    let db = try Connection("path/to/encrypted.sqlite3")
    try db.key("secret")
    try db.rekey("new secret") // 对加密的数据库替换加密KEY
    

    SQLite.swift 也存在sqlcipher_export

    let db = try Connection("path/to/unencrypted.sqlite3")
    try db.sqlcipher_export(.uri("encrypted.sqlite3"), key: "secret") 
    
    • encrypted.sqlite3指定一个导出加密数据库的完整路径。

    相关文章

      网友评论

          本文标题:SQLite对本地数据库加解密

          本文链接:https://www.haomeiwen.com/subject/hcgnddtx.html