2015-08-20 34 views
-1

我對sqlcipher有一個普遍的問題.. sqlcipher的優勢在於用GnuPG或openssl直接加密數據庫的優勢在哪裏? 每當我想用sqlcipher進行加密/解密時,我都必須打開數據庫,附加一個新數據庫,對其進行加密/解密,然後將其導出到新數據庫中並將其解密。例如像這樣:sqlcipher的優點

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

這是非常臃腫,不是嗎? 隨着openssl或gnupg我可以直接用一個命令解密/加密它..

那麼爲什麼要使用sqlcipher?

+1

你爲什麼要解密?在sqlcipher shell以及鏈接sqlcipher的應用程序中,您可以使用正確的密鑰打開數據庫並像使用任何常規SQLite數據庫一樣使用它。保持數據庫解密版本的目的是什麼? –

+0

這不起作用..我如何用正確的密鑰打開sqlcipher數據庫?當我這樣做:sqlcipher database.db然後:'pragma key ='我的密碼';'它不解密我不能'SELECT * FROM表;' – Shibumi

+1

然後其他的東西是錯誤的。這正是* sqlcipher的用途。你應該重寫這個問題(包括你用來打開和讀取數據庫的確切命令,以及你嘗試看到的確切錯誤),或者創建一個* new *問題。 –

回答

3

您看到的衝突可能與您如何使用它以及它如何更常用。 SQLCipher爲用戶訪問而動態解密和加密數據。也就是說,一旦您向SQLCipher提供了密鑰材料,只有包含您的數據的數據頁面被解密。這並不要求您將整個數據庫解密爲純文本並寫入磁盤,以便在上述模型中訪問數據。我建議您查看SQLCipher設計here上的其他詳細信息。

+0

您的鏈接指向此頁...這是故意的嗎? – Shibumi

+0

不,這是一個錯誤 - 我修復了網址。謝謝! –