我正在编写简单的离线词典应用程序。所有数据都存储在SQLite数据库中。
如果我们假设数据库已加密,那么app必须使用某种 recyclerView= (RecyclerView) layout.findViewById(R.id.your_recyclerview_id);
才能访问它。此外,我们假设此应用程序完全key
,并且不能访问任何远程服务器。
这意味着offline
将存储在apllication本身中。我试图在应用程序中找到很多隐藏此key
的方法,并且所有方法都存在缺陷。
是否可以在应用程序本身中隐式隐藏此key
?
答案 0 :(得分:1)
如果应用自动显示数据,则无法保护该数据。
您的应用必须将密钥存储在某处。无论您尝试对代码进行模糊处理多少,仍然可以对其进行反编译(或者只是执行模糊处理的部分,直到密钥出现为止)。
或者以不同的方式看待它:隐藏密钥是一种加密形式。所以现在你需要一个第二个密钥来加密/解密第一个密钥。 (但是通过混淆,'密钥'是程序结构,它不如真正的加密算法安全。)
保护数据的唯一方法是避免存储密钥,方法是要求用户在使用应用程序时输入密钥(作为密码或某些单独的令牌)。 这意味着信任用户不会放弃密钥。