本发明涉及通信技术领域,特别涉及一种软件产品软件使用许可(license)信息设置方法。
背景技术:
有很多服务器是不连接外网的,因此,没有方法通过公有网络检测license。
传统license设计,都是有个license配置文件,检测主板mac地址绑定硬件,以及检测系统当前时间判断是否过期。
但是主板的网卡mac地址是可以修改的,产品的系统时间也可以修改的,这样可以规避license限制,而不能使软件产品的使用权限被保护。
技术实现要素:
有鉴于此,本申请提供一种软件产品license信息设置方法,能够避免软件产品被复制使用的问题。
为解决上述技术问题,本申请的技术方案是这样实现的:
一种软件产品软件使用许可license信息设置方法,在硬件设备上安装软件产品时,获取硬件设备的系统盘的序列号sn号;使用该sn号按照预设算法生成该软件产品针对该硬件设备的校验值,并将该校验值作为license信息存储到该硬件设备的裸盘中;该方法包括:
当在该硬件设备上运行该软件产品时,获取该硬件设备的系统盘的sn号,并使用所述sn号按照预设算法生成该软件产品针对该硬件设备的校验值;
确定当前计算出的校验值与所述裸盘中的校验值是否相同,如果是,运行该软件产品;否则,提示该软件产品的license异常。
由上面的技术方案可知,本申请中利用硬件设备的系统盘的sn号唯一且无法修改的特性,按照预设算法预先生成校验值,存储到裸盘中,每次使用该软件产品时,获取使用该软件产品的系统盘的sn号,并使用同样的方法生成校验值,与存储的校验值比较,一致才能使用该软件产品。该技术方案不再以配置文件形式记录license信息,能够避免软件产品被复制使用的问题,即增加了软件产品使用的安全性。
附图说明
图1为本申请实施例中软件产品license信息设置流程示意图;
图2为本申请实施例中实现控制软件产品运行时间的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。
本申请实施例中提供一种软件产品license信息设置方法,利用硬件设备的系统盘的序列号(sn)号唯一且无法修改的特性,按照预设算法预先生成校验值,存储到裸盘中,每次使用该软件产品时,获取使用该软件产品的系统盘的sn号,并使用同样的方法生成校验值,与存储的校验值比较,一致才能使用该软件产品。该技术方案不再以配置文件形式记录license信息,能够避免软件产品被复制使用的问题,即增加了软件产品使用的安全性。
由于使用软件产品之前需要将软件产品安装在对应的硬件设备上,本申请具体实现时,在安装软件产品时,生成该软件产品的license,具体过程如下:
在硬件设备上安装软件产品时,获取硬件设备的系统盘的sn号。
本申请实施例中,在获取硬件设备的系统盘的sn号时,可以通过磁盘健康检测程序(smartctl)工具获取,如获取的sn号为mk0271yghkbbra。
使用该sn号按照预设算法生成该软件产品针对该硬件设备的校验值,并将该校验值作为license信息存储到该硬件设备的裸盘中。
本实施例中使用该sn号按照预设算法生成该软件产品针对该硬件设备的校验值有两种方式,具体为:
第一种:
通过消息摘要算法第五版(md5)算法,生成所述系统盘的sn号的md5值;
针对md5值的每个字符换算为二进制并取反;将每个取反后的二进制数,并按对应字符在md5值中的顺序组成新的字符串,作为该软件产品针对该硬件设备的校验值。
第二种:
通过md5算法,生成所述系统盘的sn号的md5值;
针对md5值的每个字符换算为二进制并取反;将每个取反后的二进制数转换为16进制数,并按对应字符在md5值中的顺序组成新的字符串,作为该软件产品针对该硬件设备的校验值。
两种方式的区别为将二进制按位取反后,是否将二进制数再转换为16进制数。
以第二种实现方式举例:
第一步,将sn号mk0271yghkbbra进行md5运算,生成md5值b24c7a652d30499a3c4445f421eede59,这里计算出的md5值不可逆,可以记为sn_md5。
第二步,进一步将sn_md5,即b24c7a652d30499a3c4445f421eede59的每个字符换算为二进制后,按位取反。如sn_md5一共32个字符,第一个字符b对应二进制1011,取反后对应二进制0100,换算成16进制就是4,第二个字符2,对应二进制0010,取反后1101,换算成16进制就是d,如最后一个字符9对应二进制1001,取反后0110,换算成16进制为6;生成新的字符串sn_md5_xor:4dxxxxxxxxx….xxx6,中间的字符对应的16进制数不再一一举例。
下面结合附图,详细说明本申请实施例中软件产品license信息设置过程。
参见图1,图1为本申请实施例中软件产品license信息设置流程示意图。具体步骤为:
步骤101,当在该硬件设备上运行该软件产品时,获取该硬件设备的系统盘的sn号。
步骤102,使用所述sn号按照预设算法生成该软件产品针对该硬件设备的校验值。
步骤103,确定当前计算出的校验值与所述裸盘中的校验值是否相同,如果是,执行步骤104;否则,执行步骤105。
步骤104,运行该软件产品,结束本流程。
步骤105,提示该软件产品的license异常。
本申请具体实现时,预先生成的license信息包括上文提到的校验值,用于防止软件产品被复制使用;还包括软件产品的运行时间限制值,以及当前该软件产品运行总时间。
在该硬件设备的系统盘选择一个不被使用的分区,并指定开始存储license信息位置开始存储所述license信息。
给出一种具体实现,但不限于该种实现方式:在系统盘尾部专门分配一个分区/dev/sdan,不格式化文件系统,从sdan指定的某位置pos扇区位置,开始记录license信息
在存储运行时间限制值时,将该时间限制值使用预设加密算法加密,将加密后的运行时间限制值作为license信息存储到所述裸盘中。
其中,使用的预设加密算法如base64。
运行时间限制值limit_time_days可以根据购买该软件产品的使用情况进行具体限制,如500天。
具体加密实现为:echo"500"|base64即使用base64加密算法生成加密数据ntawcg==。
并且每次在使用软件产品时,需统计并记录该软件产品的总运行时间current_run_days。
则存储的license信息为:sn_md5_xor+limit_time_days+current_run_days。
下面结合附图,详细说明本申请实施例控制软件产品运行时间的过程。
参见图2,图2为本申请实施例中实现控制软件产品运行时间的流程示意图。具体步骤为:
步骤201,正在运行软件产品时,统计该软件产品的总运行时间。
每次运行软件产品时,将运行时间累加作为总运行时间,即周期性更新总运行时间。
步骤202,使用所述预设加密算法对应的预设解密算法解密所述加密后的运行时间限制值。
获取存储的加密后的运行时间限制值,使用对应的预设解密算法解密,获取运行时间限制值。
如echo"ntawcg=="|base64–d,解压后数据,500。使用解密base64算法解密ntawcg==获得运行时间限制值500。
步骤203,周期性确定当前软件产品的总运行时间是否大于运行时间限制值,如果是,执行步骤204;否则,执行步骤205。
步骤204,停止所述软件产品的运行,并提示该软件产品的license过期。结束本流程。
步骤205,继续运行该软件产品。
本申请具体实现时,校验license信息,或控制运行时间等,均由软件产品自行执行,仅将license信息存储到裸盘上即可。
综上所述,本申请通过利用硬件设备的系统盘的sn号唯一且无法修改的特性,按照预设算法预先生成校验值,存储到裸盘中,每次使用该软件产品时,获取使用该软件产品的系统盘的sn号,并使用同样的方法生成校验值,与存储的校验值比较,一致才能使用该软件产品。该技术方案不再以配置文件形式记录license信息,能够避免软件产品被复制使用的问题,即增加了软件产品使用的安全性。
并且通过将运行时间限制加密,并统计使用软件产品的时间,来严格控制软件产品运行的时间。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。