2013-05-07 70 views
2

我将我的secretkey放在strings.xml中。我检查通过逆向工程的apktool,我得到了我的strings.xml文件R $ string.smali当我在那个文件检查,看看钥匙是否是可见或不可见,然后我发现我的钥匙串作为如何在Android中的strings.xml文件中保护我的密钥

# static fields  
.field public static final secretkey:I = 0x7f0a0035 

是有任何从这个ID获取密钥或任何其他进程的密钥从strings.xml文件中获取的可能性。

+2

你应该预料到有别人谁是至少聪明的你。所以,如果你要分发这个应用程序,任何人都可以做同样的事情,并在过程中发现你的秘密密钥。 – likeitlikeit 2013-05-07 15:01:58

+0

所以根本就没有加密等问题,因为反正有些人会更聪明呢?来吧... – FWeigl 2013-05-07 15:06:03

+0

使用像apktool这样的工具,你可以从apk获得所有的资源文件,我很确定这包括了string.xml文件。 – hardartcore 2013-05-07 15:08:20

回答

1

你应该密钥不存储在strings.xml中

更安全的选项是:SharedPreferences或内部存储与模式写localy。 在大多数情况下,我建议在手机上生成密钥。所以每部手机都会有这个uniq键。

但请记住,没有绝对的安全性,根植的手机用户可以用他的手机做任何事情。

+0

因为我的算法是通过将两个密钥和一条应该完全相同的消息组合在一起的加密过程开发的。它是一个难以解码的过程,但问题是在应用程序本身连接到服务器时存储其中一个密钥。提出一些明确的建议。 – 2013-05-07 15:36:16

0
  1. 尝试在运行时构造密钥。位操作/混洗密钥可以是这样做的一种方式。

  2. 在运行时有一个定制的加密和解密密钥。

  3. 如果您负担得起,您可以从服务器获取密钥。

1

正如伊戈尔所说,永远不要在strings.xml或代码中存储密钥。

您可以在手机上生成或在应用首次启动时从服务器获取。

-1

同意伊戈尔。

,可以储存认证令牌或类似的东西,你也可以看看

Account Manager