我有一个编译为.jar
的Java程序,它需要启用激活密钥。我希望jar
提示您输入第一个runtime
上的激活密钥,一旦激活,请存储一个字符串,以后在runtimes
中可以读取该字符串以确定是否已启用。
关于如何进行此操作有什么建议吗?
注意:我希望将字符串秘密存储,以免有人欺骗该程序以使其被启用。
更新:我一直在使用首选项api,并且正在使用以下代码来存储程序是否已启用:
String key = "userKey";
String saveString = "enabled";
Preferences root = Preferences.userRoot();
root.put(key, saveString);
这是在以后的运行时获取的:
String key = "userKey";
String failedtoLoad="Program not enabled";
Preferences root = Preferences.userRoot();
String status=root.get(key, failedToLoad);
每次我运行程序时,程序状态最终都将变为failtoLoad,并且找不到saveString,除非我保存字符串并在同一运行时获取字符串。为什么是这样?
最佳答案
看一下Java Preferences API(http://docs.oracle.com/javase/8/docs/technotes/guides/preferences/index.html)。它允许在程序执行之间存储首选项和配置数据。
关于保密性:正如JDong已经提到的那样,如果您的程序必须能够读取它,那么很可能其他人也可以读取它,这最终只是一个问题,即您想要使其对他们有多困难。最好是拥有一些String,程序可以通过算法验证这些String来确定它是否为有效密钥。在这种情况下,其他人仍然可以搜索已安装的密钥,然后在其他地方重复使用它,就像第一个人将密钥传递给其他用户一样。