目的
软件(模块)创建liense,并通过一定的方式验证license。主要是防止用户随意拷贝与无限复制,同时liense需要进行加密和解密等保护机制,防止反编译及轻易破解。根据生成liense 所依赖的信息,可以简单分为:基于硬件特征的方法;基于时间特征的方法;也可以分为离线授权和在线授权
主要方法
基于硬件特征的liense生成方法
该方法通过校验被授权主机的一些信息确定唯一性,然后根据特征信息生成唯一编码,再根据此唯一编码通过一定的加密算法生成一个key信息。
客户主机的唯一性标识主要有:机器硬件CPU、主板、Bios、Mac地址、显卡、声卡等,通过获得一个或多个唯一性标识信息,结合加密算法生成一个key信息。
注意的问题:1、确保软件模块可以获得唯一性标识信息,如程序运行在root用户下,或者使用blkid之类命令获得唯一标识码。
2、如果使用虚拟机,这种方法会被破解。
基于时间特征的liense生成方法
基于时间的生成方法,可以在软件模块内部写好与在线授权服务器对时,或者加上基本时间的动态码,一旦时间不对生成的动态码就不对,强制要求对时。
对时之后,根据时间信息,生成key。如试用30天,一年或十年有效。
注意到问题:1、该类方法有很多破解方法,详见https://www.361way.com/soft-license/6248.html。
基于过程变量的liense生成方法
当软件模块较小时,无法获得硬件设备标识信息,用无法使用时间特征时,可从软件模块输入信息中,找到不变的过程变量作为唯一性标识信息,根据这个标识信息生成key。
加密算法
加密算法部分,可参考https://blog.csdn.net/weixin_34854320/article/details/112569599。