我有一个编译为.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来确定它是否为有效密钥。在这种情况下,其他人仍然可以搜索已安装的密钥,然后在其他地方重复使用它,就像第一个人将密钥传递给其他用户一样。

10-04 17:58