如何在命令行上解密加密的sqlcipher数据库文件?

时间:2014-08-05 06:32:03

标签: encryption terminal sqlcipher

问题很简单

我拥有的是:

  • 我有一个使用sqlcipher加密的数据库文件
  • 我还拥有用于加密此db文件的密码

我需要的是:

  • 我需要解密数据库文件 /需要一个未加密/非加密/解密的数据库文件。

4 个答案:

答案 0 :(得分:32)

下载并构建sqlcipher

- 如果已安装sqlcipher,请跳过此

从目录中的https://github.com/sqlcipher/sqlcipher中提取代码(比如〜/ sqlcipher)

mkdir ~/bld;        #  Build will occur in a sibling directory
cd ~/bld;           #  Change to the build directory
../sqlcipher/configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto"; 
                    #configure sqlcipher 

make install;       #  Install the build products

将数据库解密为纯文本数据库

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

在〜/ plaintext.db找到解密的数据库,您可以使用任何sqlite浏览器,例如this

更新:2015年9月

http://sqlitebrowser.org现在支持sqlcipher数据库。那很好。

答案 1 :(得分:10)

此shell脚本将解密名为mydb.db的SQLCipher数据库并创建一个名为mydb-decrypt.db的数据库。参数是1美元=钥匙,2美元,阅读路径&写自。

#!/bin/bash
echo "Decrypting $2 using key $1"
echo "PRAGMA key='$1';select count(*) from sqlite_master;ATTACH DATABASE '$2/mydb-decrypt.db' AS plaintext KEY '';SELECT sqlcipher_export('plaintext');DETACH DATABASE plaintext;" | sqlcipher $2/mydb.db
echo "Done."

如果你想在一个命令行中执行此操作,那么它的内容是:

echo "PRAGMA key='$1';select count(*) from sqlite_master;ATTACH DATABASE '$2/mydb-decrypt.db' AS plaintext KEY '';SELECT sqlcipher_export('plaintext');DETACH DATABASE plaintext;" | sqlcipher $2/mydb.db

答案 2 :(得分:2)

基于之前的答案,我有一个全面的答案。我有配置 - OS X版本 - 10.10.4 脚步 : 1.下载并构建OpenSSL代码:

$ curl -o openssl-1.0.0e.tar.gz https://www.openssl.org/source/openssl-1.0.0e.tar.gz
$ tar xzf openssl-1.0.0e.tar.gz
$ cd openssl-1.0.0e
$ ./Configure darwin64-x86_64-cc
$ make
  1. 下载并构建SQLCipher代码。
  2. 在另一个目录中,

    $ git clone https://github.com/sqlcipher/sqlcipher.git
    $ cd sqlcipher
    

    将以下命令中的'/path/to/libcrypto.a'更改为路径

    $ ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="/path/to/libcrypto.a"
    $ make
    
    1. 解密到明文数据库(如Vinay先前的帖子所示)

      $ cd ~/;
      $ ./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;
      
    2. Tis应该帮助您解密加密文件......

答案 3 :(得分:1)

使用SQliteStudio

SqliteStudio

选择SQLiteChiper并输入密码。 数据库将打开。