导读 smart-license 是一款用于安全加固的开源项目。 主要服务于非开源产品、商业软件、具备试用功能的付费软件等,为软件提供授权制的使用方式。
一、适用场景
  1. 非开源产品、商业软件、收费软件。
  2. 限制产品的传播性,每个客户拥有专属 License。
  3. 同一款软件发行包根据 License 的不同提供不同的服务能力。
  4. 限定软件授权时效。
二、产品特色
  1. 开源,代码完全公开,License 的生成原理是透明的。
  2. 易用,秒级生成 License。
  3. 安全,生成的 License 在一定程度上具备防篡改能力,破解难度大。
三、更新说明

这是一个颠覆性的版本,为了给用户提供更好的使用体验。我们果断的剔除了 1.x 版本中的 License 生成功能,并提供了 License 的在线申请服务,整个过程仅需几秒钟。
在 smart-license 2.0 中,我们将协议规则调整为语言无关的模式。这意味着除了 Java,未来我们还能为其他编程语言提供同等的授权服务。

3.1 Shield. 盾

这是 License 在线申请服务的产品名,寓意着:守护。
你可以通过我们的使用文档连接找到该服务地址。在此感谢为我们提供服务器的朋友,以及前端框架 layui-vue 作者给予的技术支持。

3.2 客户端

客户端仅做了少许的优化,老用户稍加调整便可适配过来,不过原有的 License 文件需要重新生成。

示例程序:
private void loadLicense(Properties properties) {
     License license = new License(entity -> EnterprisePlugin.this.uninstall(),10);
     # 初始化 License 客户端。注册 license 过期后的回调逻辑,以及过期状态下的回调重复触发频率(单位:秒)。
     try (InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("License.shield")) {
	 # 加载 License 文件流。
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] bytes = new byte[1024];
        int size;
        while ((size = inputStream.read(bytes)) > 0) {
        byteArrayOutputStream.write(bytes, 0, size);
        }
        LicenseEntity entity = license.loadLicense(byteArrayOutputStream.toByteArray());
	   # 解析 License 进行合法性校验,并获取授权内容。
       properties.load(new ByteArrayInputStream(entity.getData()));
	   # 基于授权内容进行软件运行时的配置初始化。
        System.out.println(properties);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}
四、最后

我们寄希望于用技术的力量来守护技术人的权益,所以创造了 smart-license 。
但因某些因素致使该项目长期处于托管状态,在此向曾经关注该项目,以及前来技术咨询的朋友说是抱歉。
我们无法承诺会持续维护该项目,也没有计划在社区提供免费的咨询服务。
如果有朋友愿意为这个项目贡献一份力量(包括且不限于:策略优化、文档、推广运营、付费咨询),在此表示非常的欢迎和感谢!

原文来自:https://www.oschina.net/news/218477

本文地址:https://www.linuxprobe.com/smart-license-20.html编辑:问题终结者,审核员:清蒸github

Linux命令大全:https://www.linuxcool.com/

Linux系统大全:https://www.linuxdown.com/

红帽认证RHCE考试心得:https://www.rhce.net/