Java License 实现方案

功能目标

本功能主要是为了防止软件被非正规途径获取之后,被肆意传播或无限制的使用。可限制用户的使用周期、使用主机数、使用用户数。

业务流程

功能设计

license功能配置

  1. 在配置文件中加入license的如下配置
  2. license.check.date,授权码的时间范围,值为月份
    1. 0,不校验mac地址。即系统只需要输入一次授权码即可永久使用。
    2. 00-FF-77-BB-9F-55,部署主机的实际mac地址,代表license授权码只可以在这个mac地址的主机上使用。
    3. windows可使用ipconfig命令获取。
    4. linux可使用ifconfig命令获取。
  3. license.check.mac,是否要校验主机的mac地址
    1. 0,不校验mac地址。即系统可以在任意主机上使用。
    2. 1,当前的license授权码可以使用1个月。
    3. 12,当前的license授权码可以使用12个月。
    4. 其他数量以此类推
  4. license.check.users,允许使用的用户数量。
    1. 0,不校验用户数量。用户数量指的是启用状态的用户数。
    2. 500,如果授权码中的用户数量大于这个数则无法使用。
    3. 其他数量以此类推。
  5. license.code,授权码。如果授权码为空则系统将无法使用。
  6. license.keyt,密钥,用于加密解密时的关键信息。
    1. 如果为空或者系统无法正确读取时,将使用默认密钥purvar1234567890
    2. 由于使用了AES128加密,密钥至少16位

License校验事件

如下几个事件任选1个或多个进行校验。对于需要登录的系统建议使用第一种。

  1. 在用户访问登录页面时进行校验,如果校验失败提醒用户联系供应商获取授权码。
  2. 在系统启动并读取完配置信息后,如果校验失败控制台打印获取授权码失败.

License校验业务规则

  1. 读取系统中已配置的授权码。如果没有读取到授权码信息则直接报错让用户联系供应商获取授权码。
  2. 读取到授权码之后。首先使用密钥和AES128算法进行解密。
  3. 对解密后的明文使用如下格式解析授权码中的信息
    1. 授权码中包含很多段信息,使用“_”作为分割符。
    2. 授权码第一段为日期。日期格式为yyyyMMddHHmmss
    3. 授权码第二段为mac地址。
    4. 授权码第三段为用户数。
  4. 读取系统中的授权码配置,进行如下校验。
  5. 日期校验
    1. 读取license.check.date配置项的值。
    2. 如果配置项等于“0”且授权码中的值也为“0”,则校验通过。
    3. 如果配置项大于“0”且授权码中的值为“0”,则直接报错:系统的授权码已经过期请联系供应商获取新的授权码。
    4. 如果配置项大于“0”且授权码中的值也大于“0”。校验授权码的日期和当前日期是否超过允许的月份数。如果超过则报上述错误。
  6. mac地址校验
    1. 读取license.check.mac配置项的值。
    2. 如果配置项等于“0”且授权码中的值也为“0”,则校验通过。
    3. 如果配置项大于“0”且授权码中的值为“0”,则直接报错:系统的授权码不支持在当前物理地址上使用请联系供应商获取新的授权码。
    4. 如果配置项大于“0”且授权码中的日期也大于“0”。校验授权码中的值和配置值是否相等。如果不等则报上述错误。
  7. 用户数校验
    1. 读取license.check.users配置项的值。
    2. 如果配置项等于“0”且授权码中的值也为“0”,则校验通过。
    3. 如果配置项大于“0”且授权码中的值为“0”,则直接报错:系统的授权码不支持当前的用户数量请联系供应商获取新的授权码。
    4. 如果配置项大于“0”且授权码中的值也大于“0”。则读取当前系统启用状态的用户数量。
      1. 如果用户数量大于配置项中的值则报上述错误。
    5. 以上任意校验发生错误都不允许用户继续使用系统。

 

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值