SQLCipher提供了sqlcipher_export()函数,该函数可以方便的对一个普通数据库导入到SQLCipher加密加密的数据库中,操作方式如下:

  •   $ ./sqlcipher plaintext.db  
    
  •   sqlite> ATTACH DATABASE 'encrypted.db' AS encrypted KEY 'testkey';  
    
  •   sqlite> SELECT sqlcipher_export('encrypted');  
    
  •   sqlite> DETACH DATABASE encrypted;  
    

例子:
1.cd到在安装好sqlcipher文件位置处,使用命令:sqlcipher /Documents/iPhoneAoi/iPhoneAoiServer/Resource/Data/pl.db //打开待加密数据库
2.ATTACH DATABASE ‘encrypted.db’ AS encrypted KEY ‘U2FsdGVkX1’;
3.SELECT sqlcipher_export(‘encrypted’);
DETACH DATABASE encrypted;
4. .exit退出
5. 搜索全局搜索 encrypted.db 文件 即是已加密文件
EXAMPLE:

  1. sqlcipher pl_sec.db
  2. ATTACH DATABASE ‘jmsec.db’ AS jmsec KEY ‘U2FsdGVkX1’;
  3. SELECT sqlcipher_export(‘jmsec’);
  4. DETACH DATABASE jmsec;

解除使用SQLCipher加密的数据库密码
sqlcipher_export()函数同样可以将SQLCipher加密后的数据库内容导入到未加密的数据库中,从而实现解密,操作方式如下:

  •   $ ./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;  
    

EXAMPLE:

  1. sqlcipher jam.dat
  2. PRAGMA key = ‘U2FsdGVkX1’;
  3. .tables
  4. ATTACH DATABASE ‘pl.db’ AS pl KEY ‘’;
  5. SELECT sqlcipher_export(‘pl’);
  6. DETACH DATABASE pl;
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐