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

Encryption 如何在命令行上解密加密的sqlcipher数据库文件?,encryption,terminal,sqlcipher,Encryption,Terminal,Sqlcipher,问题很简单 我拥有的是: 我有一个数据库文件,它使用sqlcipher加密 我还拥有用于加密此db文件的密码短语 我需要的是: 我需要解密数据库文件/需要一个未加密/未加密/解密的数据库文件 下载并构建sqlcipher——如果已经安装了sqlcipher,则跳过此步骤 从目录中提取代码(比如~/sqlcipher) 将数据库解密为纯文本数据库 在~/plaintext.db中找到解密后的数据库,您可以将其与任何类似sqlite的浏览器一起使用 更新日期:2015年9月 现在支持sqlci

问题很简单

我拥有的是:

  • 我有一个数据库文件,它使用sqlcipher加密
  • 我还拥有用于加密此db文件的密码短语
我需要的是:

  • 我需要解密数据库文件/需要一个未加密/未加密/解密的数据库文件
下载并构建sqlcipher——如果已经安装了sqlcipher,则跳过此步骤 从目录中提取代码(比如~/sqlcipher)

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

在~/plaintext.db中找到解密后的数据库,您可以将其与任何类似sqlite的浏览器一起使用

更新日期:2015年9月


现在支持sqlcipher数据库。这很好。

这个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

基于前面的答案,我有一个全面的答案。我有配置-OSX版本-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
  • 下载并生成SQLCipher代码
  • 在另一个目录中

    $ git clone https://github.com/sqlcipher/sqlcipher.git
    $ cd sqlcipher
    
    将以下命令中的“/path/改为/libcrypto.a”改为您的路径

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

  • 这将帮助您解密加密文件…

    使用SQliteStudio

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

    Hi@vinaywadhwa您能告诉我如何为windows 7做到这一点吗?。在windows上构建的过程很复杂。你可以在android上使用/开发一个应用程序来实现这一点,如果这是一个选项的话——比如在Ubuntu上,我必须安装“libssl dev”和“libcrypto++-dev”,否则我在配置时会出错。我如何在objective c中实现它?“文件是加密的,或者不是数据库”我出错了。当我附加数据库时
    $ git clone https://github.com/sqlcipher/sqlcipher.git
    $ cd sqlcipher
    
    $ ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="/path/to/libcrypto.a"
    $ make
    
    $ 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;