java - 如何使 java jar 在特定日期/时间过期
问题描述
我正在通过 Maven 构建一些 java jar 构建,但我需要放置某些时间戳,以使 JAR 在 JAR 中固定/提供的某个日期过期。
谢谢库马尔·肖拉夫
解决方案
有几种方法:
- 最简单的方法:硬编码。
- 特性
- 分布式方式
- 买个工具
- 搜索免费工具
- 构建工具
硬编码
在您的代码中的某处,您将拥有
if (currentDate > hardcodedDate) System.exit(0);
runYourCode();
这是没有意义的。对于了解反编译的每个人来说,将其更改为:
// if (currentDate > hardcodedDate) System.exit(0);
runYourCode();
特性
在属性文件中,您保留它应该工作的天数。在您的应用程序启动时,您检查某个文件是否存在。如果它没有 -> 创建它,除了你当前的系统日期之外什么都没有。在每次下一次启动时:
Date check = readDateFromFile();
if ( currentDate > check + numberOfDays ) System.exit(0);
再次,很容易伪造。您需要做的就是删除创建的文件,调回系统日期,...
分散式
这是我至少会考虑的。分发所有代码意味着可以根据用户的需要复制它。棘手的业务,因为如果他们知道您的代码,他们可以更改它。
创建一个与处理您的业务逻辑的服务联系的客户端。确保每个客户端都有一个“密钥”,无论它是硬编码的还是在属性文件中,这是无关紧要的。在您的数据库中,保留所有密钥的列表,包括试用密钥和真实密钥。对于试用密钥,在第一次使用时,您在 DB -> 当前系统日期 + numberOfDaysAllowed 中添加一个值。在其他所有用途中,根据系统日期检查该值(不是客户端的系统日期,而是您的服务器的系统日期)。日期到了吗?从数据库中删除试用密钥,或将标志“过期”设置为真。然后,检查串口是否在数据库中,如果是,标志是否过期。如果串行不在数据库中,或者标志已过期,则终止程序。客户端可能会尝试篡改密钥,但如果他这样做了,密钥将不会
买个工具
让我们面对现实吧,为此创建软件的人也需要赚取收入
搜索免费工具
在我链接到的线程中,有一个指向此页面的链接:trial maker,这似乎是免费的。
构建工具
如果您不想购买工具,并且对任何现有的免费工具不满意,请随意构建自己的工具。
推荐阅读
- r - 如何在 bash 块中打印 r 的版本?
- wordpress - Gulp Sass 和 Tailwind with Timber
- html - 为什么浮动选择与其他相邻
- c - 从 Raspberry PI Pico RP2040 开始 - blink.c C 中的低级编程
- python - 我需要摆脱 unnamed: 0 title of column in dataframe 我正在从中创建数据库。但我做不到
- apple-m1 - Auto-sklearn 是否可用于苹果芯片?
- string - 有没有办法在vscode的飞镖中自动关闭花括号以进行字符串插值?
- java - 如果运行时没有类型,如何可能出现 ArrayStoreException?
- r - R:如何使用 h2o(.ai) randomForest 的对齐设置从游侠获得相同(高质量)的结果
- spring - Spring Boot:这些日志是什么意思?