编译后如何存储变量?

时间:2018-02-21 16:31:13

标签: java compilation

我的程序(用Java编写)中有一个变量:

String myPassword

使用Android Studio编译代码后,我得到一个Android应用程序,我想让其他人使用它。

但我很害怕:用户是否可以从应用程序中获取变量值(密码)?

假设密码值是“myPass”。它的二进制文件是:

01101101 01111001 01010000 01100001 01110011 01110011

应用程序二进制文件中是否包含此序列?

1 个答案:

答案 0 :(得分:2)

如果您使用javap -c -p -constants反编译您的类,您会看到这些字符串:

public class DeleteMe {

   private static final String test = "def";

   public static void main(String[] args) {
      String test = "abc";
   }
}

会产生(重要的两行):

private static final java.lang.String test = "def";
ldc           #2                  // String abc

否则,在您的应用程序中存储密码非常糟糕,通常人们会使用某种类型的数据库来保存密码。

the must read关于密码Stringchar[]