在java项目中,需要客户定制离线授权时,怎么保证软件时效性呢?  如果用日期授权比如一年,如果单纯的获取系统时间,在离线的情况下,如果客户修改系统时间,软件的授权无法控制. 导致经济利益的损失.

下面我介绍写我的方案:

1.没有做授权方案的代码, 修改系统时间,反编译代码, 所有逻辑一览无余,无法保证内容不被破解,复制,修改

package com.haiteng.action.autoreport;import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/*** * ClassName:TestStrings* Description:测试 字符串加密方案* author: Q/V:75238016* date:2021年11月15日 - 下午5:11:08*/
public class TestStrings {//加密串public static String strpw= "888888888888";//授权日期public static String strDate= "2022-08-08 08:08:08";//测试public static void main(String[] args) throws Exception {DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");//判断当前密码是否一致if("888888888888".equals(strpw)) {//执行相关操作System.out.println("密码验证成功...");}//获取当前时间Date date = new Date();//判断当前过期时间if(df.parse(strDate).getTime() > date.getTime()) {//执行相关操作System.out.println("时间验证通过...");}}
}

2.采用混淆方法,内置时钟方案, 不用获取系统时间, 无法通过修改系统时间延长使用时间, 也无法反编译代码获取代码授权信息

package com.haiteng.action.autoreport;import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Base64;
import java.util.Base64.Decoder;
import java.util.Date;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;public class TestStrings
{public static void main(String[] NLCC)throws Exception{String JLCC;boolean kLCC;DateFormat mLCC = new SimpleDateFormat(A[b[2]]);if (G(A[b[3]].equals(strpw)))System.out.println(A[b[4]]);Date LLCC = new Date();if (!(h(f(mLCC.parse(strDate).getTime(), LLCC.getTime()))))return;System.out.println(A[b[5]]);}private static boolean h(int ???){byte AJCC;return (??? > 0);}private static String b(String EkCC, String dkCC){double wJCC;String AkCC;Exception bkCC;char CkCC;char dkCC;char dkCC;EkCC = new String(Base64.getDecoder().decode(EkCC.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);StringBuilder hkCC = new StringBuilder();char[] GkCC = dkCC.toCharArray();int fkCC = b[0];short ZJCC = EkCC.toCharArray();boolean yJCC = ZJCC.length;Exception XJCC = b[0];while (J(XJCC, yJCC)){char LkCC = ZJCC[XJCC];"".length();++fkCC;++XJCC;"".length();if (null != null)return null;}return String.valueOf(hkCC);}static{E();d();strpw = A[b[0]];strDate = A[b[1]];}private static String C(String oJCC, String LJCC){short JJCC;byte kJCC;boolean LJCC;boolean LJCC;try{SecretKeySpec RJCC = new SecretKeySpec(MessageDigest.getInstance("MD5").digest(LJCC.getBytes(StandardCharsets.UTF_8)), "Blowfish");Cipher qJCC = Cipher.getInstance("Blowfish");qJCC.init(b[2], RJCC);return new String(qJCC.doFinal(Base64.getDecoder().decode(oJCC.getBytes(StandardCharsets.UTF_8))), StandardCharsets.UTF_8);}catch (Exception PJCC){PJCC.printStackTrace();}return null;}private static String A(String ALCC, String ZkCC){char VkCC;Exception wkCC;String ZkCC;String ZkCC;try{SecretKeySpec dLCC = new SecretKeySpec(Arrays.copyOf(MessageDigest.getInstance("MD5").digest(ZkCC.getBytes(StandardCharsets.UTF_8)), b[7]), "DES");Cipher CLCC = Cipher.getInstance("DES");CLCC.init(b[2], dLCC);return new String(CLCC.doFinal(Base64.getDecoder().decode(ALCC.getBytes(StandardCharsets.UTF_8))), StandardCharsets.UTF_8);}catch (Exception bLCC){bLCC.printStackTrace();}return null;}private static void d(){A = new String[b[6]];A[b[0]] = A("qHu8wLLDF3GtZHy0018HAw==", "tVOKu");A[b[1]] = b("f0F4QHh9SWdCbW1BckhldUt6Sg==", "MqJrU");A[b[2]] = C("uX8Ds2zyr8EqcR6UE9pyWlqyUMsAaDgO", "VGtVr");A[b[3]] = b("QlJbXE5CUltcTkJS", "zjcdv");A[b[4]] = A("JktDF9fl3OwDkhnixRjda/Z9EUCprgtJ", "SfSkl");A[b[5]] = A("JTPA6jQSVMwNKBts2Mfou3sEhcAMbgpN", "JMCOI");}private static boolean G(int ???){float CJCC;return (??? != 0);}private static void E(){b = new int[8];b[0] = ((36 + 67 - -22 + 6 ^ 67 + 63 - -11 + 38) & (0xEC ^ 0xC3 ^ 0x8C ^ 0x93 ^ -" ".length()));b[1] = " ".length();b[2] = "  ".length();b[3] = "   ".length();b[4] = (0x1E ^ 0x1A);b[5] = (0x6 ^ 0x3);b[6] = (0xC3 ^ 0xC5);b[7] = (47 + 112 - 69 + 76 ^ 164 + 167 - 330 + 173);}private static int f(long paramLong1, long paramLong2){return (paramLong1 < paramLong2);}private static boolean J(int ???, int arg1){int i;byte EJCC;return (??? < i);}
}

需要方案,制定化的,欢迎大家交流学习!

qq/wx  : 75238016  

java离线日期授权解决方案 解决改系统日期 Java代码混淆 日期混淆相关推荐

  1. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题

    在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...

  2. java浏览器安全设置,主编练习win7系统运行java提示“您的安全设置已阻止不可信应用程序运行”的对策...

    根据小编的调查并不是所有的朋友都知道win7系统运行java提示"您的安全设置已阻止不可信应用程序运行"的问题怎么解决,就向我询问有什么办法可以解决win7系统运行java提示&q ...

  3. JAVA毕设项目社区电商平台系统(java+VUE+Mybatis+Maven+Mysql)

    JAVA毕设项目社区电商平台系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Web ...

  4. Java毕设项目高校智慧校园学生系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目高校智慧校园学生系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(W ...

  5. Java毕设项目医护人员排班系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目医护人员排班系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Web ...

  6. JAVA毕设项目水果食品顺溯源系统(java+VUE+Mybatis+Maven+Mysql)

    JAVA毕设项目水果食品顺溯源系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(We ...

  7. Java毕设项目网上体育用品商城系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目网上体育用品商城系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(W ...

  8. Java毕设项目菜鸟驿站快递分发系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目菜鸟驿站快递分发系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(W ...

  9. JAVA项目实现离线授权日期授权解决方案 代码混淆 字符串加密 支持JDK16

    通常项目是通过 <系统名称 + 物理地址+硬盘序号+当前时间>等等一些能区别服务器的参数作为源,来加密成一个申请码,然后通过授权码的方式进行授权的方式 但是这里有一个问题,如果项目是离线放 ...

最新文章

  1. Nature:采用甘露糖苷选择性抑制尿路致病性大肠杆菌
  2. Java字符串的子串
  3. mysql建表_128、mysql建表和简单sql
  4. 小白学深度之LSTM长短期记忆神经网络——深度AI科普团队
  5. 本机未装Oracle数据库时Navicat for Oracle 报错:Cannot create oci environment 原因分析及解决方案
  6. springboot map数据类型注入_Spring Boot(五):春眠不觉晓,Mybatis知多少
  7. win10安装git,打开git bash闪退
  8. 分布式服务框架-原理与实践:15---服务降级-学习笔记
  9. 2016 CSU - 1803
  10. 如何选择适合自己的项目管理方法
  11. 宁海象山H5棋牌游戏定制开发
  12. 通过资源监视器排查网络高占用异常
  13. Day3-中文分词技术(常用分词技术介绍)
  14. 十大在线编程学习网站
  15. HDMI转VGA转换器 HDMI转接头,VGA转换器
  16. Alpha 冲刺(5/10)
  17. 如何快速绘制一个等边三角形呢?
  18. 抢红包: 红包过期失效案例
  19. Twitter Inc.(TWTR)2020年第三季度收益电话会议记录
  20. YOYO软件使用指南

热门文章

  1. 接下来要以应对面试做准备了
  2. 20款优秀的移动产品原型和线框图设计
  3. mysql 启动和关闭
  4. 查找:顺序查找、二分查找、分块查找
  5. 昨天去做地推,在路上看见了这么繁茂的仙人掌
  6. 时间选择器抽出。PickerView和原生
  7. 【4万字Linux线程解析】从0开始学习Linux线程
  8. 清者自清!国际泳联为孙杨“药检风波”盖棺定论
  9. centos6.5 安装php探针,Centos5.5下安装LAMP完整版
  10. 阳康后是否二次感染,长新冠与肠道菌群的关联,多种潜在的干预措施