【问题标题】:Encrypting sqlite database on PC and decrypt it on phone在PC上加密sqlite数据库并在手机上解密
【发布时间】:2017-02-05 13:26:03
【问题描述】:

我正在创建一个字典应用程序。我想在创建应用程序之前在我的 PC 中加密 sqlite 数据库(对单词有意义)。然后用那个加密的数据库生成apk文件,这样当有人解压apk文件时,他们只能看到加密的数据库。每次用户搜索一个单词时,该单词的加密“含义”都应该由安卓应用程序解密。我经历了多个线程,他们谈到了加密和解密手机中的数据库。请建议我一些安全的方法来保护我的辛勤工作。

【问题讨论】:

标签: android sqlite encryption


【解决方案1】:

没有问题。只需在编译应用程序之前加密,将密钥添加到应用程序并在需要时在应用程序中解密。

当然,有能力的攻击者将能够获得密钥。

从设备所有者那里保护资产非常困难,通常需要 DRM,这很困难并且仍然不完全安全。

【讨论】:

    【解决方案2】:

    实际上,不需要在移动端加密任何数据,因为这听起来不正确,因为当您发布内容时应该在全球范围内受到保护,您不知道用户设备本身的安全程度,并且用户可能足够专业,可以破解您的应用及其安全性。

    如果您想要安全的东西,请在您的后端保护它,并使用带有 https 保护的 api 与您的后端对话,并且标头会为每个用户自动生成 Auth 令牌。

    我想在创建apk之前加密数据库并在 用户搜索一个词。

    如果您的意思是在您的手机内部解密并在您的 sqllite 本身内部搜索,为什么要对其进行加密,如果手机内部的代码会加密和解密,攻击者即使是初级水平的攻击者也可以破解您的数据!!

    【讨论】:

    • 我想在创建应用程序之前“在我的 PC 中”加密 sqlite 数据库。然后使用该加密数据库构建应用程序。最后,当用户搜索单词时,应用程序将从数据库中解密特定字段。
    • @BalajiA 我明白了,但同样,如果你把解密数据的代码放在你的应用程序中,攻击者可以很容易地反编译代码,看看你在做什么来解密和获取整个数据,我仍然无法理解您为什么要首先加密!想知道你想加密存储什么样的数据!
    • 该应用程序有一个单词和含义的数据库。该应用程序是一个离线词典。我明白你的意思。尽管如此,我还是想对数据库进行加密,让“窃取数据库”变得有点困难。
    • 所以你想让你的应用程序消耗高 CPU 和 RAM + 更快地消耗电池,只是为了让 0.001% 的几率被盗“有点”困难?想要“窃取”你的数据库的人,要么很难,要么不会!
    猜你喜欢
    • 2012-01-22
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 2013-10-28
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    相关资源
    最近更新 更多