【问题标题】:Advantage of sqlciphersqlcipher的优势
【发布时间】:2015-08-20 11:52:21
【问题描述】:

我有一个关于 sqlcipher 的一般性问题.. sqlcipher 相对于直接使用 GnuPG 或 openssl 加密数据库的优势在哪里? 每次我想用 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?

【问题讨论】:

  • 你为什么要解密?在 sqlcipher shell 中,以及从链接 sqlcipher 的应用程序中,您可以使用正确的密钥打开数据库并像使用任何普通 SQLite 数据库一样使用它。保留数据库的解密版本的目的是什么?
  • 这不起作用..如何使用正确的密钥打开 sqlcipher 数据库?当我这样做时:sqlcipher database.db 然后:pragma key='my password'; 它没有被解密我不能这样做SELECT * FROM table;
  • 那么还有其他问题。这正是 sqlcipher 的用途。你应该重写这个问题(包括你用来打开和读取数据库的确切命令,以及你尝试时看到的确切错误),或者创建一个 new 问题来询问这个问题。
  • 不。这与您在此处显示的示例完全相同。您尝试在不创建明文版本的情况下打开和读取加密数据库的版本在哪里?数据库是如何创建和加密的?你确定你有正确的钥匙吗?
  • 你确定数据库是你的吗?

标签: encryption sqlite sqlcipher


【解决方案1】:

您看到的冲突可能在于您使用它的方式与更常用的方式。 SQLCipher 动态解密和加密数据以供用户访问。也就是说,一旦您向 SQLCipher 提供了密钥材料,只有包含您的数据的数据页才会被解密。这不需要您将整个数据库解密为纯文本并写入磁盘以访问您在上面建模的数据。我建议您查看有关 SQLCipher 设计 here 的其他详细信息。

【讨论】:

  • 不,这是一个错误 - 我已修复 URL。谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-02-02
  • 2010-12-13
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 2013-09-11
  • 2012-09-20
  • 1970-01-01
相关资源
最近更新 更多