【问题标题】:Encrypt exisiting database in Android加密Android中的现有数据库
【发布时间】:2015-04-24 16:02:58
【问题描述】:

我已经在 Play 商店中发布了一个应用。现在,我想加密应用程序的数据库。

我知道 SQLCipher for Android 可以为我做这件事。但问题是我的应用已经被很多用户使用,而且他们里面有很多未加密的数据。

现在,如何将 SQLCipher 与现有的未加密数据库一起使用?这样我以前的所有数据都可以毫无问题地加密,并且新数据可以正常运行。

【问题讨论】:

  • SQLCipher 是一个 SQLite 扩展,提供透明的 256 位 AES 数据库文件加密...链接 -- guardianproject.info/code/sqlcipher
  • 您必须提供升级脚本,但是是的,AFAIK 您可以升级现有数据库。你试过了吗?
  • @shkschneider 我找不到你?你能详细说明一下吗?

标签: android database sqlite encryption


【解决方案1】:

您可以使用以下命令使用 SqlCipher 加密明文数据库,或者您可以在 GitHub 上找到 Java 示例代码。

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

您可以在安装新应用的过程中通过覆盖安装程序中的 onUpgrade 方法来加密用户的数据库。

【讨论】:

  • 谢谢。我应该在用户更新应用后只加密一次原始数据库吗?
  • 您可以向您的应用添加逻辑,检查用户数据库是否已加密,如果未加密则加密。
  • 这是个好主意。但是有没有办法检查我的数据库是否已加密,然后只加密它?
  • 链接已过期!
猜你喜欢
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 2011-10-07
  • 1970-01-01
相关资源
最近更新 更多