【问题标题】:how to encrypt an existing database on assets folder android studio如何加密资产文件夹android studio上的现有数据库
【发布时间】:2019-12-25 20:59:55
【问题描述】:

我阅读了很多关于 SqlCipher 的教程和主题,但我不明白我应该做什么! 我的资产文件夹中有现成的数据库。我的数据库包含大约 4 个表和 5000 条记录。我想让它更安全。我该怎么做?有人可以帮我解决这个问题吗?由于我是 android 新手,我需要一步一步的解决方案。目前我使用 sqliteasset.SQLiteAssetHelper 库从 assets 文件夹中读取数据库。

【问题讨论】:

  • 您无法让资产中的数据库更加安全,因为资产中的所有内容都是只读的。
  • 有没有办法为数据库设置密码或加密数据库内容?
  • 是的,您可以加密数据并将加密的数据放入数据库中。
  • 你能帮我一步一步做吗?
  • 你的代码在哪里?

标签: android sqlite encryption android-sqlite sqlite-cipher


【解决方案1】:

不要将开发时间浪费在客户端数据的加密上 - 应用程序应该可以在无人参与的情况下访问的数据(即应用程序在没有用户输入任何密码的情况下解密)。

以下是对我的陈述的解释:

假设您设法通过一些加密密钥保护(加密)您的数据库,并且应用程序在启动时应该读取所​​有加密数据。 这意味着您的应用程序应该具有解密所需的内置密钥。 任何具有最少逆向工程知识的人都可以从您的 apk 文件中提取密钥和数据库并对其进行解密。

当您设计安全机制来保护数据时,您需要回答的首要问题之一是:

  • 攻击者需要花费多少时间来打开数据? 如果您的回答类似于“暴力破解我的保护需要 10,000 年”,那么您的保护可能还可以。

但是现在您正试图通过默默无闻来实现安全性,并且它是新的作品。 有决心的人可以轻松地从您自己的代码中提取加密密钥,并在几乎没有时间的情况下解密您的数据库。

当您设计客户端-服务器架构时只有一种方法可以保护商业机密 - 将所有敏感的东西放在服务器端

如果您的客户端应用程序依赖于某些业务敏感信息(例如使用您自己的 API 密钥调用某些付费 API),那么您的应用程序存在设计缺陷。

如果您的应用程序依赖于对业务不敏感的信息,那么加密这些信息是没有意义的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 2017-12-05
    • 2013-07-14
    • 2014-12-29
    • 2013-10-14
    • 2014-05-09
    相关资源
    最近更新 更多