一种软件授权加密方法和解密方法、装置及系统与流程

文档序号:26589135发布日期:2021-09-10 20:18阅读:419来源:国知局
一种软件授权加密方法和解密方法、装置及系统与流程

1.本发明涉及加密和解密技术领域,特别是涉及一种软件授权加密方法和解密方法、装置及系统。


背景技术:

2.随着互联网技术的普及和快速发展,软件授权加密技术逐渐与互联网技术全面结合起来。授权加密是指针对授权内容的加密和保护,以达到保证所分发软件的安全性的目的,力求获取授权的用户在规定的权限内使用该软件产品,通过授权加密保护,防止授权以外的用户非法使用和滥用软件产品的行为。
3.通过软件授权加密技术,能够解决软件开发商对软件销售数字化、安全化和可管理的需求。相关技术中,对软件授权加密的方法为:为目标软件代码编辑生成伪代码,即对目标软件的业务代码进行修改,以使得目标软件代码不易被授权以外的用户识别,增加目标软件代码的安全性。但随着代码破解技术及代码反编译能力越来越强,使得软件授权代码模块很容易被篡改,导致开发商的软件无法按照最初的预期来管理,甚至存在软件随意复制、软件源代码泄露等风险。


技术实现要素:

4.本发明实施例的目的在于提供一种软件授权加密方法和解密方法、装置及系统,以增加软件授权加密的安全性,防止软件代码被篡改。具体技术方案如下:
5.第一方面,本发明实施例提供了一种软件授权加密方法,所述方法包括:
6.获取目标服务器相关信息,并基于所述相关信息生成授权验证码,其中,所述相关信息为用于标识所述目标服务器的信息,所述目标服务器为绑定服务器;
7.将待加密文件转换为第一文件数组,并对所述第一文件数组进行预处理,得到预处理后的识别码和多个待加密子文件数组;
8.将所述授权验证码转换为预设长度的加密密钥数组;
9.针对每一待加密子文件数组,将所述待加密子文件数组中的元素与所述加密密钥数组中的元素进行异或运算,得到异或加密后的第一加密子文件数组;
10.基于所述加密密钥数组,生成置换加密数组;
11.针对每一第一加密子文件数组,利用所述置换加密数组,对所述第一加密子文件数组进行置换加密,得到置换加密后的第二加密子文件数组;
12.基于所述预处理后的识别码以及各第二加密子文件数组,得到加密文件。
13.可选地,所述相关信息包括:所述目标服务器的主板编号、ip地址以及mac地址;
14.所述获取目标服务器相关信息,并基于所述相关信息生成授权验证码的步骤,包括:
15.利用如下表达式生成授权验证码:
16.key=randomuuid+md5(主板编号+ip地址+mac地址+密钥)
17.其中,key表示授权验证码,randomuuid为32位随机字符串生成函数,md5(主板编号+ip地址+mac地址+密钥)用于生成32位与目标服务器的主板编号、ip地址、mac地址和随机密钥绑定的字符串,密钥为预先设定的随机密钥。
18.可选地,所述基于所述加密密钥数组,生成置换加密数组的步骤,包括:
19.基于所述加密密钥数组中各元素的值,确定将所述加密密钥数组分成多个密钥子数组时每一密钥子数组对应元素的个数;
20.取所述加密密钥数组中各元素与所述个数的余数,并对各余数进行去重,得到新的加密密钥数组;
21.在所述新的加密密钥数组中元素的数量少于所述个数时,基于所述新的加密密钥数组中最后一个元素,按照顺序增加的方式将所述新的加密密钥数组的元素补齐至所述个数个,得到置换加密数组。
22.可选地,所述针对每一第一加密子文件数组,利用所述置换加密数组,对所述第一加密子文件数组进行置换加密,得到置换加密后的第二加密子文件数组的步骤,包括:
23.针对每一第一加密子文件数组,基于所述个数对所述第一加密子文件数组进行分组,得到多个第三加密子文件数组;
24.基于所述置换加密数组中各元素的值,对每一第三加密子文件数组中各元素进行位置置换重新排序,得到多个第四加密子文件数组;
25.将各第四加密子文件数组组成矩阵的行和列进行置换并拼接,得到置换加密后的第二加密子文件数组。
26.可选地,所述对所述第一文件数组进行预处理,得到预处理后的识别码和多个待加密子文件数组的步骤,包括:
27.将所述第一文件数组的前8位识别码逐一减一处理,得到预处理后的识别码,以及将所述第一文件数组的第8位之后的元素每128位分为一组确定为待加密子文件数组,将不足128位的子文件数组确定为无需加密子文件数组;
28.所述基于所述预处理后的识别码以及各第二加密子文件数组,得到加密文件的步骤,包括:
29.对所述预处理后的识别码,各第二加密子文件数组以及所述无需加密子文件数组进行拼接处理,得到加密文件。
30.第二方面,本发明实施例提供了一种软件授权解密方法,所述方法包括:
31.获取授权验证码和各待解密子文件数组,所述待解密子文件数组为对待解密文件进行预处理后得到的;
32.获取目标服务器相关信息,并基于所述相关信息生成解密密钥,其中,所述相关信息为用于标识所述目标服务器的信息,所述目标服务器为绑定服务器;
33.判断所述授权验证码和所述解密密钥是否匹配;
34.在所述授权验证码和所述解密密钥匹配的情况下,将所述解密密钥转换为预设长度的解密密钥数组;
35.基于所述解密密钥数组,生成置换解密数组;
36.针对每一所述待解密子文件数组,利用所述置换解密数组,对所述待解密子文件数组进行置换解密,得到置换解密后的解密子文件数组;
37.针对每一解密子文件数组,将所述解密子文件数组中的元素与所述解密密钥数组中的元素进行异或运算,得到异或解密后的目标解密子文件数组。
38.第三方面,本发明实施例提供了一种软件授权加密装置,所述装置包括:
39.第一生成单元,用于获取目标服务器相关信息,并基于所述相关信息生成授权验证码,其中,所述相关信息为用于标识所述目标服务器的信息,所述目标服务器为绑定服务器;
40.预处理单元,用于将待加密文件转换为第一文件数组,并对所述第一文件数组进行预处理,得到预处理后的识别码和多个待加密子文件数组;
41.第一转换单元,用于将所述授权验证码转换为预设长度的加密密钥数组;
42.第一加密单元,用于针对每一待加密子文件数组,将所述待加密子文件数组中的元素与所述加密密钥数组中的元素进行异或运算,得到异或加密后的第一加密子文件数组;
43.第二生成单元,用于基于所述加密密钥数组,生成置换加密数组;
44.第二加密单元,用于针对每一第一加密子文件数组,利用所述置换加密数组,对所述第一加密子文件数组进行置换加密,得到置换加密后的第二加密子文件数组;
45.第三加密单元,用于基于所述预处理后的识别码以及各第二加密子文件数组,得到加密文件。
46.第四方面,本发明实施例提供了一种软件授权解密装置,所述装置包括:
47.获取单元,用于获取授权验证码和各待解密子文件数组,所述待解密子文件数组为对待解密文件进行预处理后得到的;
48.第三生成单元,用于获取目标服务器相关信息,并基于所述相关信息生成解密密钥,其中,所述相关信息为用于标识所述目标服务器的信息,所述目标服务器为绑定服务器;
49.判断单元,用于判断所述授权验证码和所述解密密钥是否匹配;
50.第二转换单元,用于在所述判断单元判断出所述授权验证码和所述解密密钥匹配的情况下,将所述解密密钥转换为预设长度的解密密钥数组;
51.第四生成单元,用于基于所述解密密钥数组,生成置换解密数组;
52.第一解密单元,用于针对每一所述待解密子文件数组,利用所述置换解密数组,对所述待解密子文件数组进行置换解密,得到置换解密后的解密子文件数组;
53.第二解密单元,用于针对每一解密子文件数组,将所述解密子文件数组中的元素与所述解密密钥数组中的元素进行异或运算,得到异或解密后的目标解密子文件数组。
54.第五方面,本发明实施例提供了一种软件授权加密和解密系统,所述系统包括:加密模块,类加载器以及解密模块,所述类加载器包括解密处理器;
55.所述加密模块,用于获取目标服务器相关信息,并基于所述相关信息生成授权验证码,其中,所述相关信息为用于标识所述目标服务器的信息,所述目标服务器为绑定服务器;将待加密文件转换为第一文件数组,并对所述第一文件数组进行预处理,得到预处理后的识别码和多个待加密子文件数组;将所述授权验证码转换为预设长度的加密密钥数组;针对每一待加密子文件数组,将所述待加密子文件数组中的元素与所述加密密钥数组中的元素进行异或运算,得到异或加密后的第一加密子文件数组;基于所述加密密钥数组,生成
置换加密数组;针对每一第一加密子文件数组,利用所述置换加密数组,对所述第一加密子文件数组进行置换加密,得到置换加密后的第二加密子文件数组;基于所述预处理后的识别码以及各第二加密子文件数组,得到加密文件,并将所述加密文件以及所述授权验证码发送至所述解密处理器;
56.所述解密处理器,用于接收所述加密模块发送的所述加密文件以及所述授权验证码,并判断所述加密文件是否需要解密,在所述加密文件需要解密的情况下,将所述加密文件确定为待解密文件;以及将所述待解密文件对应的第二文件数组中的各待解密子文件数组和所述授权验证码发送至所述解密模块,所述待解密子文件数组为对所述待解密文件进行预处理后得到的;
57.所述解密模块,用于接收所述解密处理器发送的所述授权验证码和各待解密子文件数组;获取目标服务器相关信息,并基于所述相关信息生成解密密钥,并判断所述授权验证码和所述解密密钥是否匹配;在所述授权验证码和所述解密密钥匹配的情况下,将所述解密密钥转换为预设长度的解密密钥数组;基于所述解密密钥数组,生成置换解密数组;针对每一所述待解密子文件数组,利用所述置换解密数组,对所述待解密子文件数组进行置换解密,得到置换解密后的解密子文件数组;针对每一解密子文件数组,将所述解密子文件数组中的元素与所述解密密钥数组中的元素进行异或运算,得到异或解密后的目标解密子文件数组,并将各目标解密子文件数组发送至所述解密处理器;
58.所述解密处理器,用于接收所述解密模块发送的各目标解密子文件数组,并基于各所述目标解密子文件数组得到解密文件。
59.可选地,所述解密处理器,具体用于:
60.将所述加密文件转换为目标文件数组,判断所述目标文件数组的前8位识别码是否与目标识别码一致,并在不一致的情况下,确定所述加密文件需要解密,将所述加密文件确定为待解密文件;
61.将所述待解密文件转换为第二文件数组,并将所述第二文件数组的前8位识别码逐一加一处理,得到待处理识别码,以及将所述第二文件数组的第8位之后的元素每128位分为一组确定为待解密子文件数组,将不足128位的子文件数组确定为无需解密子文件数组,以及将所述待解密子文件数组发送至所述解密模块;
62.将所述待处理识别码,接收到的各目标解密子文件数组以及所述无需解密子文件数组进行拼接处理,得到解密文件。
63.本发明实施例有益效果:
64.本发明实施例提供的一种软件授权加密方法和解密方法、装置及系统,基于绑定的目标服务器相关信息生成授权校验码,实现了加密密钥与授权服务器的绑定,对待加密文件预处理之后的多个待加密子文件数组逐一实现加密,加密过程不修改待加密文件的业务代码,使得加密之后的文件业务代码无法被篡改,提高了加密的安全性,防止软件代码被篡改。解密过程与加密过程相对应,在解密的过程中也不涉及对待解密文件业务代码的修改,避免了待解密文件业务代码被篡改和泄露的风险。
65.当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
66.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
67.图1为本发明实施例提供的一种软件授权加密方法的流程示意图;
68.图2为本发明实施例提供的一种软件授权解密方法的流程示意图;
69.图3为本发明实施例提供的一种软件授权加密和解密的流程示意图;
70.图4为本发明实施例提供的一种软件授权加密装置的结构示意图;
71.图5为本发明实施例提供的一种软件授权解密装置的结构示意图;
72.图6为本发明实施例提供的一种软件授权加密和解密系统的结构示意图;
73.图7为本发明实施例提供的一种电子设备的结构示意图;
74.图8为本发明实施例提供的另一种电子设备的结构示意图。
具体实施方式
75.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本技术所获得的所有其他实施例,都属于本发明保护的范围。
76.为解决现有软件授权加密存在的问题,本发明实施例提供了一种软件授权加密方法,该方法包括:
77.获取目标服务器相关信息,并基于所述相关信息生成授权验证码,其中,所述相关信息为用于标识所述目标服务器的信息,所述目标服务器为绑定服务器;将待加密文件转换为第一文件数组,并对所述第一文件数组进行预处理,得到预处理后的识别码和多个待加密子文件数组;将所述授权验证码转换为预设长度的加密密钥数组;针对每一待加密子文件数组,将所述待加密子文件数组中的元素与所述加密密钥数组中的元素进行异或运算,得到异或加密后的第一加密子文件数组;基于所述加密密钥数组,生成置换加密数组;针对每一第一加密子文件数组,利用所述置换加密数组,对所述第一加密子文件数组进行置换加密,得到置换加密后的第二加密子文件数组;基于所述预处理后的识别码以及各第二加密子文件数组,得到加密文件。
78.本发明实施例提供的一种软件授权加密方法,基于绑定的目标服务器相关信息生成授权校验码,实现了加密密钥与授权服务器的绑定,对待加密文件预处理之后的多个待加密子文件数组逐一实现加密,加密过程不修改待加密文件的业务代码,使得加密之后的文件业务代码无法被篡改,提高了加密的安全性,防止软件代码被篡改。
79.下面对本发明实施例提供的一种软件授权加密方法进行详细介绍:
80.本发明实施例提供的软件授权加密方法,可以应用于基于java系统环境的电子设备加密系统中,或加密程序或c/s(客户端/服务器)端等加密工具中,例如,可以是java系统环境下软件部署于服务器端时的加密工具等。该加密方法可以是基于jdk(java development kit)软件开发组件的加密方法。
81.如图1所示,图1为本发明实施例提供的一种软件授权加密方法的流程示意图,该方法可以包括:
82.s101,获取目标服务器相关信息,并基于相关信息生成授权验证码。
83.其中,相关信息为用于标识目标服务器的信息,目标服务器为绑定服务器。
84.在对软件进行加密时,知晓软件待部署的目标服务器,即软件绑定的服务器,可以获取该目标服务器的相关信息,该相关信息可以包括:目标服务器的主板编号、ip地址(internet protocol address,网际协议地址)以及mac地址(media access control address,物理地址)等,进一步基于相关信息生成授权验证码。
85.作为本发明实施例一种可选的实施方式,获取目标服务器相关信息,并基于相关信息生成授权验证码的实施过程,可以包括:
86.利用如下表达式生成授权验证码:
87.key=randomuuid+md5(主板编号+ip地址+mac地址+密钥)
88.其中,key表示授权验证码,randomuuid为32位随机字符串生成函数,md5(主板编号+ip地址+mac地址+密钥)用于生成32位与目标服务器的主板编号、ip地址、mac地址和随机密钥绑定的字符串,密钥为预先设定的随机密钥。
89.示例性的,生成的授权验证码为64位字符串,前32位为通过randomuuid函数生成的随机字符串,后32位为通过md5(主板编号+ip地址+mac地址+密钥)生成的与目标服务器的主板编号、ip地址、mac地址和随机密钥绑定的字符串,该秘钥可以是开发人员根据实际需求设定的。
90.s102,将待加密文件转换为第一文件数组,并对第一文件数组进行预处理,得到预处理后的识别码和多个待加密子文件数组。
91.优选地,待加密文件可以是class类文件,进而在jdk环境下读取class文件时,可以自动转换为byte字节文件数组,java class文件的byte数据前8位为固定字符,可以称为识别码。
92.作为本发明实施例一种可选的实施方式,对第一文件数组进行预处理,得到预处理后的识别码和多个待加密子文件数组的实施过程,可以包括:
93.将第一文件数组的前8位识别码逐一减一处理,得到预处理后的识别码,以及将第一文件数组的第8位之后的元素每128位分为一组确定为待加密子文件数组,将不足128位的子文件数组确定为无需加密子文件数组。
94.将第一文件数组的前8位识别码每一位减去1,得到预处理后的识别码,预处理后的识别码不作加密处理。对于第一文件数组第8位之后的元素,每128位分为一组,并将其确定为待加密子文件数组,可以表示为1
×
128维的子文件数组file[]进行加密处理,以及将后续不满128位的元素所组成的子文件数组确定为无需加密子文件数组,不作加密处理。
[0095]
s103,将授权验证码转换为预设长度的加密密钥数组。
[0096]
生成的授权验证码为64位字符串,将授权验证码中每个字符转化为ascii码,得到64位加密密钥数组。示例性的,加密密钥数组可以表示为key[],大小为1
×
64。
[0097]
s104,针对每一待加密子文件数组,将待加密子文件数组中的元素与加密密钥数组中的元素进行异或运算,得到异或加密后的第一加密子文件数组。
[0098]
针对每一待加密子文件数组,待加密子文件数组大小为1
×
128,加密密钥数组大
小为1
×
64,故而,可以将待加密子文件数组中前64个元素每一位对应与加密密钥数组中的元素进行异或算法,后64个元素每一位也对应与加密密钥数组中的元素进行异或算法,得到异或加密后的第一加密子文件数组。
[0099]
示例性的,待加密子文件数组表示为file[],加密密钥数组表示为key[],异或加密后的第一加密子文件数组表示为xor file[],^表示异或算法,则有
[0100]
xorfile[0]=file[0]^key[0]
[0101]
xorfile[1]=file[1]^key[1]
[0102]
xorfile[2]=file[2]^key[2]
[0103]
...
[0104]
xorfile[64]=file[64]^key[0]
[0105]
xorfile[65]=file[65]^key[1]
[0106]
..
[0107]
xorfile[127]=file[127]^key[63]
[0108]
s105,基于加密密钥数组,生成置换加密数组。
[0109]
对上述加密秘钥数组中各元素的大小以及加密秘钥数组的大小进行剪裁处理,以生成置换加密数组,进而利用该置换加密数组,对异或加密后的第一加密子文件数组进行转换加密。
[0110]
s106,针对每一第一加密子文件数组,利用置换加密数组,对第一加密子文件数组进行置换加密,得到置换加密后的第二加密子文件数组。
[0111]
s107,基于预处理后的识别码以及各第二加密子文件数组,得到加密文件。
[0112]
作为本发明实施例一种可选的实施方式,基于预处理后的识别码以及各第二加密子文件数组,得到加密文件的实施过程,可以包括:
[0113]
对预处理后的识别码,各第二加密子文件数组以及无需加密子文件数组进行拼接处理,得到加密文件。
[0114]
在得到置换加密后的第二加密子文件数组后,可以将上述预处理后的识别码,各第二加密子文件数组以及无需加密子文件数组按顺序拼接,得到加密文件。
[0115]
本发明实施例提供的一种软件授权加密方法,基于绑定的目标服务器相关信息生成授权校验码,实现了加密密钥与授权服务器的绑定,对待加密文件预处理之后的多个待加密子文件数组逐一实现加密,加密过程不修改待加密文件的业务代码,使得加密之后的文件业务代码无法被篡改,提高了加密的安全性,防止软件代码被篡改。
[0116]
作为本发明实施例一种可选的实施方式,上述步骤s105,基于加密密钥数组,生成置换加密数组的实现过程,可以包括:
[0117]
步骤一、基于加密密钥数组中各元素的值,确定将加密密钥数组分成多个密钥子数组时每一密钥子数组对应元素的个数。
[0118]
示例性的,可以使用如下表达式,确定将加密密钥数组分成多个密钥子数组时每一密钥子数组对应元素的个数:
[0119][0120]
其中,groupnum为将加密密钥数组分成多个密钥子数组时每一密钥子数组对应元
素的个数,key[]表示加密密钥数组,key[n]表示加密密钥数组的第n个元素,groupnum取[32,16,8,4]中最接近的值。相应的,加密密钥数组对应的分组数n=128/groupnum。
[0121]
步骤二、取加密密钥数组中各元素与上述个数的余数,并对各余数进行去重,得到新的加密密钥数组。
[0122]
示例性的,groupnum为16,加密密钥数组key[]为:[48,99,99,102,56,97,100,53,55,51,99,101,52,49,53,50,57,100,102,50,102,101,49,52,52,56,52,97,50,56,51,54,54,53,97,50,102,98,50,56,98,101,98,57,98,98,54,99,53,57,52,99,55,48,57,56,57,99,99,49,55,100,97,51],取加密密钥数组中各元素与上述个数的余数,当余数为0时对应的元素取16,得到取余数之后的数组为:[16,3,3,6,8,1,4,5,7,3,3,5,4,1,5,2,9,4,6,2,6,5,1,4,4,8,4,1,2,8,3,6,6,5,1,2,6,2,2,8,2,5,2,9,2,2,6,3,5,9,4,3,7,9,8,9,3,3,1,7,4,1,3,3]。进一步,对各余数进行去重,得到新的加密密钥数组为:[16,3,6,8,1,4,5,7,2,9]。
[0123]
步骤三、在新的加密密钥数组中元素的数量少于上述个数时,基于新的加密密钥数组中最后一个元素,按照顺序增加的方式将新的加密密钥数组的元素补齐至上述个数个,得到置换加密数组。
[0124]
新的加密密钥数组为:[16,3,6,8,1,4,5,7,2,9],新的加密密钥数组中元素的数量少于groupnum(16个),则基于新的加密密钥数组中最后一个元素9,按照顺序增加的方式将新的加密密钥数组的元素补齐至16个,得到置换加密数组即为:[16,3,6,8,1,4,5,7,2,9,10,11,12,13,14,15]。
[0125]
可选地,在新的加密密钥数组中元素的数量不少于上述个数时,可以选取新的加密密钥数组中前上述个数个元素,得到置换加密数组。
[0126]
作为本发明实施例一种可选的实施方式,上述步骤s106,针对每一第一加密子文件数组,利用置换加密数组,对第一加密子文件数组进行置换加密,得到置换加密后的第二加密子文件数组的实现过程,可以包括:
[0127]
步骤1,针对每一第一加密子文件数组,基于上述个数对第一加密子文件数组进行分组,得到多个第三加密子文件数组。
[0128]
针对每一第一加密子文件数组,以上述个数为分组后第三加密子文件数组中元素的个数,对每一第一加密子文件数组进行分组。
[0129]
示例性的,第一加密子文件数组可以表示为:
[0130]
[116,53,112,63,81,57,94,64,108,78,12,71,13,1,26,63,89,30,106,7,89,94,58,1,102,96,60,6,12,82,7,18,2,7,3,5,105,102,89,15,9,94,10,30,64,58,86,91,69,7,79,12,95,113,84,80,79,84,84,109,66,122,3,47,90,5,22,9,88,48,59,107,3,88,51,23,92,84,87,90,6,8,67,81,76,97,14,118,59,100,15,110,123,85,119,10,102,107,24,55,106,44,60,63,89,58,0,13,37,105,110,71,98,105,31,92,67,86,4,95,118,0,27,82,84,48,92,1]
[0131]
基于上述个数对该第一加密子文件数组进行分组,分组数为m=128/16=8,即分为8个第三加密子文件数组,分别表示为:
[0132]
[116,53,112,63,81,57,94,64,108,78,12,71,13,1,26,63]
[0133]
[89,30,106,7,89,94,58,1,102,96,60,6,12,82,7,18]
[0134]
[2,7,3,5,105,102,89,15,9,94,10,30,64,58,86,91]
[0135]
[69,7,79,12,95,113,84,80,79,84,84,109,66,122,3,47]
[0136]
[90,5,22,9,88,48,59,107,3,88,51,23,92,84,87,90]
[0137]
[6,8,67,81,76,97,14,118,59,100,15,110,123,85,119,10]
[0138]
[102,107,24,55,106,44,60,63,89,58,0,13,37,105,110,71]
[0139]
[98,105,31,92,67,86,4,95,118,0,27,82,84,48,92,1]
[0140]
步骤2,基于置换加密数组中各元素的值,对每一第三加密子文件数组中各元素进行位置置换重新排序,得到多个第四加密子文件数组。
[0141]
置换加密数组表示为:[16,3,6,8,1,4,5,7,2,9,10,11,12,13,14,15],基于置换加密数组中各元素的值,对每一第三加密子文件数组中各元素进行位置置换重新排序。例如,置换加密数组中第一个元素为16,则将每一第三加密子文件数组中第16个元素重新排列在第1个位置处,置换加密数组中第二个元素为3,则将每一第三加密子文件数组中第3个元素重新排列在第2个位置处,依次类推,对对每一第三加密子文件数组中各元素进行位置置换重新排序,得到多个第四加密子文件数组。得到重新排序后的第四加密子文件数组可以表示为:
[0142]
[81,108,53,57,94,112,64,63,78,12,71,13,1,26,63,116]
[0143]
[89,102,30,94,58,106,1,7,96,60,6,12,82,7,18,89]
[0144]
[105,9,7,102,89,3,15,5,94,10,30,64,58,86,91,2]
[0145]
[95,79,7,113,84,79,80,12,84,84,109,66,122,3,47,69]
[0146]
[88,3,5,48,59,22,107,9,88,51,23,92,84,87,90,90]
[0147]
[76,59,8,97,14,67,118,81,100,15,110,123,85,119,10,6]
[0148]
[106,89,107,44,60,24,63,55,58,0,13,37,105,110,71,102]
[0149]
[67,118,105,86,4,31,95,92,0,27,82,84,48,92,1,98,]
[0150]
步骤3,将各第四加密子文件数组组成矩阵的行和列进行置换并拼接,得到置换加密后的第二加密子文件数组。
[0151]
将上述8个1
×
16的第四加密子文件数组,组成一个8
×
16的矩阵,进一步将8
×
16的矩阵的行和列进行置换,得到的数组可以表示为:
[0152]
[81,89,105,95,88,76,106,67]
[0153]
[108,102,9,79,3,59,89,118]
[0154]
[53,30,7,7,5,8,107,105]
[0155]
[57,94,102,113,48,97,44,86]
[0156]
[94,58,89,84,59,14,60,4]
[0157]
[112,106,3,79,22,67,24,31]
[0158]
[64,1,15,80,107,118,63,95]
[0159]
[63,7,5,12,9,81,55,92]
[0160]
[78,96,94,84,88,100,58,0]
[0161]
[12,60,10,84,51,15,0,27]
[0162]
[71,6,30,109,23,110,13,82]
[0163]
[13,12,64,66,92,123,37,84]
[0164]
[1,82,58,122,84,85,105,48]
[0165]
[26,7,86,3,87,119,110,92]
[0166]
[63,18,91,47,90,10,71,1]
[0167]
[116,89,2,69,90,6,102,98]
[0168]
进一步,将上述行和列置换后得到的各数组中前一个数组的最后一个元素,与后一个数组的第一个元素进行拼接,得到置换加密后的第二加密子文件数组,可以表示为:
[0169]
[81,89,105,95,88,76,106,67,108,102,9,79,3,59,89,118,53,30,7,7,5,8,107,105,57,94,102,113,48,97,44,86,94,58,89,84,59,14,60,4,112,106,3,79,22,67,24,31,64,1,15,80,107,118,63,95,63,7,5,12,9,81,55,92,78,96,94,84,88,100,58,0,12,60,10,84,51,15,0,27,71,6,30,109,23,110,13,82,13,12,64,66,92,123,37,84,1,82,58,122,84,85,105,48,26,7,86,3,87,119,110,92,63,18,91,47,90,10,71,1,116,89,2,69,90,6,102,98]
[0170]
本发明实施例提供的一种软件授权加密方法,基于绑定的目标服务器相关信息生成授权校验码,实现了加密密钥与授权服务器的绑定,对待加密文件预处理之后的多个待加密子文件数组逐一实现加密,加密过程不修改待加密文件的业务代码,使得加密之后的文件业务代码无法被篡改,提高了加密的安全性,防止软件代码被篡改。
[0171]
如图2所示,图2为本发明实施例提供的一种软件授权解密方法的流程示意图。
[0172]
本发明实施例提供的软件授权解密方法,可以应用于基于java软件系统的jdk环境中的解密工具中。具体可以通过c++解密执行工具进行解密,因c++加壳程序不易反编译的特性,使得加密后的class文件很难被破解,提高了软件授权加密的安全性。基于c++加壳程序不易反编译的特性,在jdk的类加载器中可以增加解密处理器,进而在软件授权解密时,利用解密处理器触发解密执行工具,对待解密子文件数组进行解密。
[0173]
本发明实施例提供的一种软件授权解密方法,可以包括:
[0174]
s201,获取授权验证码和各待解密子文件数组。
[0175]
解密执行工具可以接收解密处理器发送的授权验证码和各待解密子文件数组,其中,授权验证码是在软件授权加密的过程中加密工具所生成的,待解密子文件数组为对待解密文件进行预处理后得到的,对待解密文件进行预处理可以是解密处理器执行的,其处理过程与上述软件授权加密过程中,将待加密文件转换为第一文件数组,并对第一文件数组进行预处理的过程相对应。
[0176]
具体的,将待解密文件转换为第二文件数组,并将第二文件数组的前8位识别码逐一加一处理,得到待处理识别码,以及将第二文件数组的第8位之后的元素每128位分为一组确定为待解密子文件数组,将不足128位的子文件数组确定为无需解密子文件数组。
[0177]
s202,获取目标服务器相关信息,并基于相关信息生成解密密钥。
[0178]
其中,相关信息为用于标识目标服务器的信息,目标服务器为绑定服务器;
[0179]
此过程的实现可参照上述步骤s101的具体实现过程,本发明实施例在此不再赘述。
[0180]
s203,判断授权验证码和解密密钥是否匹配。
[0181]
授权验证码和解密密钥均为64位字符串,其中,后32位均为通过md5(主板编号+ip地址+mac地址+密钥)生成的与目标服务器的主板编号、ip地址、mac地址和随机密钥绑定的
字符串。因此,可以判断授权验证码和解密密钥后32位是否相同,如果相同,则授权验证码和解密密钥匹配,可以进行后续的解密处理,如果不相同,则表示解密程序无法执行,结束解密的过程。
[0182]
s204,在授权验证码和解密密钥匹配的情况下,将解密密钥转换为预设长度的解密密钥数组。
[0183]
在授权验证码和解密密钥匹配的情况下,表明可以进行后续的解密处理,进而将解密密钥转换为预设长度的解密密钥数组。具体的,将解密密钥转换为预设长度的解密密钥数组的实现过程可参见上文步骤s103的具体实现过程,本发明实施例在此不再赘述。
[0184]
s205,基于解密密钥数组,生成置换解密数组。
[0185]
此过程的实现可参照上述步骤s105基于加密密钥数组,生成置换加密数组的具体实现过程,本发明实施例在此不再赘述。示例性的,生成置换解密数组为:[16,3,6,8,1,4,5,7,2,9,10,11,12,13,14,15]。
[0186]
s206,针对每一待解密子文件数组,利用置换解密数组,对待解密子文件数组进行置换解密,得到置换解密后的解密子文件数组。
[0187]
示例性的,待解密子文件数组(即上述加密后的第二加密子文件数组)可以表示为:
[0188]
[81,89,105,95,88,76,106,67,108,102,9,79,3,59,89,118,53,30,7,7,5,8,107,105,57,94,102,113,48,97,44,86,94,58,89,84,59,14,60,4,112,106,3,79,22,67,24,31,64,1,15,80,107,118,63,95,63,7,5,12,9,81,55,92,78,96,94,84,88,100,58,0,12,60,10,84,51,15,0,27,71,6,30,109,23,110,13,82,13,12,64,66,92,123,37,84,1,82,58,122,84,85,105,48,26,7,86,3,87,119,110,92,63,18,91,47,90,10,71,1,116,89,2,69,90,6,102,98]
[0189]
作为本发明实施例一种可选的实施方式,步骤s206针对每一待解密子文件数组,利用置换解密数组,对待解密子文件数组进行置换解密,得到置换解密后的解密子文件数组的实现过程,可以包括:
[0190]
步骤a,针对每一待解密子文件数组,基于确定的将解密密钥数组分成多个解密密钥子数组时每一解密密钥子数组对应元素的目标个数,对待解密子文件数组进行分组,得到目标个数个第一待解密子文件数组。
[0191]
示例性的,确定的将解密密钥数组分成多个解密密钥子数组时每一解密密钥子数组对应元素的目标个数为16,则,将待解密子文件数组分成16组第一待解密子文件数组,如下所示:
[0192]
[81,89,105,95,88,76,106,67]
[0193]
[108,102,9,79,3,59,89,118]
[0194]
[53,30,7,7,5,8,107,105]
[0195]
[57,94,102,113,48,97,44,86]
[0196]
[94,58,89,84,59,14,60,4]
[0197]
[112,106,3,79,22,67,24,31]
[0198]
[64,1,15,80,107,118,63,95]
[0199]
[63,7,5,12,9,81,55,92]
[0200]
[78,96,94,84,88,100,58,0]
[0201]
[12,60,10,84,51,15,0,27]
[0202]
[71,6,30,109,23,110,13,82]
[0203]
[13,12,64,66,92,123,37,84]
[0204]
[1,82,58,122,84,85,105,48]
[0205]
[26,7,86,3,87,119,110,92]
[0206]
[63,18,91,47,90,10,71,1]
[0207]
[116,89,2,69,90,6,102,98]
[0208]
步骤b,将各第一待解密子文件数组组成矩阵的行和列进行置换,得到多个第二待解密子文件数组。
[0209]
将上述16个1
×
8的第一待解密子文件数组,组成一个16
×
8的矩阵,进一步将16
×
8的矩阵的行和列进行置换,得到8个1
×
16的第二待解密子文件数组可以表示为:
[0210]
[81,108,53,57,94,112,64,63,78,12,71,13,1,26,63,116]
[0211]
[89,102,30,94,58,106,1,7,96,60,6,12,82,7,18,89]
[0212]
[105,9,7,102,89,3,15,5,94,10,30,64,58,86,91,2]
[0213]
[95,79,7,113,84,79,80,12,84,84,109,66,122,3,47,69]
[0214]
[88,3,5,48,59,22,107,9,88,51,23,92,84,87,90,90]
[0215]
[76,59,8,97,14,67,118,81,100,15,110,123,85,119,10,6]
[0216]
[106,89,107,44,60,24,63,55,58,0,13,37,105,110,71,102]
[0217]
[67,118,105,86,4,31,95,92,0,27,82,84,48,92,1,98,]
[0218]
步骤c,基于置换解密数组中各元素的值,对每一第二待解密子文件数组中各元素进行位置置换重新排序,得到多个第三待解密子文件数组。
[0219]
置换解密数组表示为:[16,3,6,8,1,4,5,7,2,9,10,11,12,13,14,15],重新排序后的第三待解密子文件数组可以表示为:
[0220]
[116,53,112,63,81,57,94,64,108,78,12,71,13,1,26,63]
[0221]
[89,30,106,7,89,94,58,1,102,96,60,6,12,82,7,18]
[0222]
[2,7,3,5,105,102,89,15,9,94,10,30,64,58,86,91]
[0223]
[69,7,79,12,95,113,84,80,79,84,84,109,66,122,3,47]
[0224]
[90,5,22,9,88,48,59,107,3,88,51,23,92,84,87,90]
[0225]
[6,8,67,81,76,97,14,118,59,100,15,110,123,85,119,10]
[0226]
[102,107,24,55,106,44,60,63,89,58,0,13,37,105,110,71]
[0227]
[98,105,31,92,67,86,4,95,118,0,27,82,84,48,92,1]
[0228]
步骤d,对多个第三待解密子文件数组进行拼接处理,得到置换解密后的解密子文件数组。
[0229]
置换解密后的解密子文件数组可以表示为:
[0230]
[116,53,112,63,81,57,94,64,108,78,12,71,13,1,26,63,89,30,106,7,89,94,58,1,102,96,60,6,12,82,7,18,2,7,3,5,105,102,89,15,9,94,10,30,64,58,86,91,69,7,79,12,95,113,84,80,79,84,84,109,66,122,3,47,90,5,22,9,88,48,59,107,3,88,51,23,92,84,87,90,6,8,67,81,76,97,14,118,59,100,15,110,123,85,119,10,102,107,24,
55,106,44,60,63,89,58,0,13,37,105,110,71,98,105,31,92,67,86,4,95,118,0,27,82,84,48,92,1]
[0231]
参见图2,s207,针对每一解密子文件数组,将解密子文件数组中的元素与解密密钥数组中的元素进行异或运算,得到异或解密后的目标解密子文件数组。
[0232]
此过程的实现可参照上述步骤s104针对每一待加密子文件数组,将待加密子文件数组中的元素与加密密钥数组中的元素进行异或运算,得到异或加密后的第一加密子文件数组的具体实现过程,本发明实施例在此不再赘述。
[0233]
本发明实施例提供的一种软件授权解密方法,基于绑定的目标服务器相关信息生成解密秘钥,实现了解密密钥与授权服务器的绑定,进一步对解密秘钥与授权验证码进行匹配,在匹配成功的情况下对待解密文件预处理之后的多个待解密子文件数组逐一实现解密,解密过程不修改待解密文件的业务代码,使得加密之后的文件业务代码无法被篡改,提高了加密的安全性,防止软件代码被篡改,且避免了待解密文件业务代码被篡改和泄露的风险。
[0234]
示例性的,如图3所示,图3为本发明实施例提供的一种软件授权加密和解密的流程示意图。在jdk环境下,使用加密工具采用上述软件授权加密方法对原class文件进行加密,得到加密class文件,该加密class文件发送至类加载器,进而类加载器中的解密处理器调用c++解密执行文件(即解密执行工具)采用上述软件授权解密方法对加密class文件进行解密,解密的结果返回至解密处理器中,进而,jdk的数据加载区域完成解密后数据的加载。
[0235]
与前述一种软件授权加密方法相对应,本发明实施例还提供了一种软件授权加密装置。图4为本发明实施例提供的一种软件授权加密装置的结构示意图,该装置可以包括:
[0236]
第一生成单元301,用于获取目标服务器相关信息,并基于相关信息生成授权验证码,其中,相关信息为用于标识目标服务器的信息,目标服务器为绑定服务器;
[0237]
预处理单元302,用于将待加密文件转换为第一文件数组,并对第一文件数组进行预处理,得到预处理后的识别码和多个待加密子文件数组;
[0238]
第一转换单元303,用于将授权验证码转换为预设长度的加密密钥数组;
[0239]
第一加密单元304,用于针对每一待加密子文件数组,将待加密子文件数组中的元素与加密密钥数组中的元素进行异或运算,得到异或加密后的第一加密子文件数组;
[0240]
第二生成单元305,用于基于加密密钥数组,生成置换加密数组;
[0241]
第二加密单元306,用于针对每一第一加密子文件数组,利用置换加密数组,对第一加密子文件数组进行置换加密,得到置换加密后的第二加密子文件数组;
[0242]
第三加密单元307,用于基于预处理后的识别码以及各第二加密子文件数组,得到加密文件。
[0243]
本发明实施例提供的一种软件授权加密装置,基于绑定的目标服务器相关信息生成授权校验码,实现了加密密钥与授权服务器的绑定,对待加密文件预处理之后的多个待加密子文件数组逐一实现加密,加密过程不修改待加密文件的业务代码,使得加密之后的文件业务代码无法被篡改,提高了加密的安全性,防止软件代码被篡改。
[0244]
可选地,上述相关信息包括:目标服务器的主板编号、ip地址以及mac地址;上述第一生成单元301,具体用于:利用如下表达式生成授权验证码:
[0245]
key=randomuuid+md5(主板编号+ip地址+mac地址+密钥)
[0246]
其中,key表示授权验证码,randomuuid为32位随机字符串生成函数,md5(主板编号+ip地址+mac地址+密钥)用于生成32位与目标服务器的主板编号、ip地址、mac地址和随机密钥绑定的字符串,密钥为预先设定的随机密钥。
[0247]
可选地,上述第二生成单元305,具体用于:
[0248]
基于加密密钥数组中各元素的值,确定将加密密钥数组分成多个密钥子数组时每一密钥子数组对应元素的个数;取加密密钥数组中各元素与个数的余数,并对各余数进行去重,得到新的加密密钥数组;在新的加密密钥数组中元素的数量少于个数时,基于新的加密密钥数组中最后一个元素,按照顺序增加的方式将新的加密密钥数组的元素补齐至个数个,得到置换加密数组。
[0249]
可选地,上述第二加密单元306,具体用于:
[0250]
针对每一第一加密子文件数组,基于个数对第一加密子文件数组进行分组,得到多个第三加密子文件数组;基于置换加密数组中各元素的值,对每一第三加密子文件数组中各元素进行位置置换重新排序,得到多个第四加密子文件数组;将各第四加密子文件数组组成矩阵的行和列进行置换并拼接,得到置换加密后的第二加密子文件数组。
[0251]
可选地,上述预处理单元302,具体用于:将第一文件数组的前8位识别码逐一减一处理,得到预处理后的识别码,以及将第一文件数组的第8位之后的元素每128位分为一组确定为待加密子文件数组,将不足128位的子文件数组确定为无需加密子文件数组;
[0252]
上述第三加密单元307,具体用于:对预处理后的识别码,各第二加密子文件数组以及无需加密子文件数组进行拼接处理,得到加密文件。
[0253]
与前述一种软件授权解密方法相对应,本发明实施例还提供了一种软件授权解密装置。图5为本发明实施例提供的一种软件授权解密装置的结构示意图,该装置可以包括:
[0254]
获取单元401,用于获取授权验证码和各待解密子文件数组,待解密子文件数组为对待解密文件进行预处理后得到的;
[0255]
第三生成单元402,用于获取目标服务器相关信息,并基于相关信息生成解密密钥,其中,相关信息为用于标识目标服务器的信息,目标服务器为绑定服务器;
[0256]
判断单元403,用于判断授权验证码和解密密钥是否匹配;
[0257]
第二转换单元404,用于在判断单元403判断出授权验证码和解密密钥匹配的情况下,将解密密钥转换为预设长度的解密密钥数组;
[0258]
第四生成单元405,用于基于解密密钥数组,生成置换解密数组;
[0259]
第一解密单元406,用于针对每一待解密子文件数组,利用置换解密数组,对待解密子文件数组进行置换解密,得到置换解密后的解密子文件数组;
[0260]
第二解密单元407,用于针对每一解密子文件数组,将解密子文件数组中的元素与解密密钥数组中的元素进行异或运算,得到异或解密后的目标解密子文件数组。
[0261]
本发明实施例提供的一种软件授权解密装置,基于绑定的目标服务器相关信息生成解密秘钥,实现了解密密钥与授权服务器的绑定,进一步对解密秘钥与授权验证码进行匹配,在匹配成功的情况下对待解密文件预处理之后的多个待解密子文件数组逐一实现解密,解密过程不修改待解密文件的业务代码,使得加密之后的文件业务代码无法被篡改,提高了加密的安全性,防止软件代码被篡改,且避免了待解密文件业务代码被篡改和泄露的
风险。
[0262]
可选地,上述第四生成单元405,具体用于:
[0263]
基于解密密钥数组中各元素的值,确定将解密密钥数组分成多个解密密钥子数组时每一解密密钥子数组对应元素的目标个数;取解密密钥数组中各元素与目标个数的余数,并对各余数进行去重,得到新的解密密钥数组;在新的解密密钥数组中元素的数量少于目标个数时,基于新的解密密钥数组中最后一个元素,按照顺序增加的方式将新的解密密钥数组的元素补齐至目标个数个,得到置换解密数组。
[0264]
可选地,上述第一解密单元406,具体用于:
[0265]
针对每一待解密子文件数组,基于确定的将解密密钥数组分成多个解密密钥子数组时每一解密密钥子数组对应元素的目标个数,对待解密子文件数组进行分组,得到目标个数个第一待解密子文件数组;将各第一待解密子文件数组组成矩阵的行和列进行置换,得到多个第二待解密子文件数组;基于置换解密数组中各元素的值,对每一第二待解密子文件数组中各元素进行位置置换重新排序,得到多个第三待解密子文件数组;对多个第三待解密子文件数组进行拼接处理,得到置换解密后的解密子文件数组。
[0266]
与前述一种软件授权加密方法和一种软件授权解密方法相对应,本发明实施例还提供了一种软件授权加密和解密系统。图6为本发明实施例提供的一种软件授权加密和解密系统的结构示意图,该系统500可以包括:加密模块501,类加载器502以及解密模块503,类加载器502包括解密处理器504;
[0267]
加密模块501,用于获取目标服务器相关信息,并基于相关信息生成授权验证码,其中,相关信息为用于标识目标服务器的信息,目标服务器为绑定服务器;将待加密文件转换为第一文件数组,并对第一文件数组进行预处理,得到预处理后的识别码和多个待加密子文件数组;将授权验证码转换为预设长度的加密密钥数组;针对每一待加密子文件数组,将待加密子文件数组中的元素与加密密钥数组中的元素进行异或运算,得到异或加密后的第一加密子文件数组;基于加密密钥数组,生成置换加密数组;针对每一第一加密子文件数组,利用置换加密数组,对第一加密子文件数组进行置换加密,得到置换加密后的第二加密子文件数组;基于预处理后的识别码以及各第二加密子文件数组,得到加密文件,并将加密文件以及授权验证码发送至解密处理器504;
[0268]
解密处理器504,用于接收加密模块501发送的加密文件以及授权验证码,并判断加密文件是否需要解密,在加密文件需要解密的情况下,将加密文件确定为待解密文件;以及将待解密文件对应的第二文件数组中的各待解密子文件数组和授权验证码发送至解密模块503,待解密子文件数组为对待解密文件进行预处理后得到的;
[0269]
解密模块503,用于接收解密处理器504发送的授权验证码和各待解密子文件数组;获取目标服务器相关信息,并基于相关信息生成解密密钥,并判断授权验证码和解密密钥是否匹配;在授权验证码和解密密钥匹配的情况下,将解密密钥转换为预设长度的解密密钥数组;基于解密密钥数组,生成置换解密数组;针对每一待解密子文件数组,利用置换解密数组,对待解密子文件数组进行置换解密,得到置换解密后的解密子文件数组;针对每一解密子文件数组,将解密子文件数组中的元素与解密密钥数组中的元素进行异或运算,得到异或解密后的目标解密子文件数组,并将各目标解密子文件数组发送至解密处理器504;
[0270]
解密处理器504,用于接收解密模块503发送的各目标解密子文件数组,并基于各目标解密子文件数组得到解密文件。
[0271]
本发明实施例提供的一种软件授权加密和解密系统,基于绑定的目标服务器相关信息生成授权校验码,实现了加密密钥与授权服务器的绑定,对待加密文件预处理之后的多个待加密子文件数组逐一实现加密,加密过程不修改待加密文件的业务代码,使得加密之后的文件业务代码无法被篡改,提高了加密的安全性,防止软件代码被篡改。因c++加壳程序不易反编译的特性,使得加密后的class文件很难被破解,提高了软件授权加密的安全性。基于c++加壳程序不易反编译的特性,在jdk的类加载器中增加解密处理器,进而在软件授权解密时,利用解密处理器触发解密执行工具,对待解密子文件数组进行解密,解密过程与加密过程相对应,在解密的过程中也不涉及对待解密文件业务代码的修改,避免了待解密文件业务代码被篡改和泄露的风险。
[0272]
可选地,上述解密处理器504,具体用于:
[0273]
将加密文件转换为目标文件数组,判断目标文件数组的前8位识别码是否与目标识别码一致,并在不一致的情况下,确定加密文件需要解密,将加密文件确定为待解密文件;
[0274]
将待解密文件转换为第二文件数组,并将第二文件数组的前8位识别码逐一加一处理,得到待处理识别码,以及将第二文件数组的第8位之后的元素每128位分为一组确定为待解密子文件数组,将不足128位的子文件数组确定为无需解密子文件数组,以及将待解密子文件数组发送至解密模块;
[0275]
将待处理识别码,接收到的各目标解密子文件数组以及无需解密子文件数组进行拼接处理,得到解密文件。
[0276]
本发明实施例还提供了一种电子设备,如图7所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
[0277]
存储器603,用于存放计算机程序;
[0278]
处理器601,用于执行存储器603上所存放的程序时,实现本发明实施例所提供的图1所示的一种软件授权加密方法的步骤,并达到相同的技术效果。
[0279]
本发明实施例还提供了另一种电子设备,如图8所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
[0280]
存储器703,用于存放计算机程序;
[0281]
处理器701,用于执行存储器703上所存放的程序时,实现本发明实施例所提供的图2所示的一种软件授权解密方法的步骤,并达到相同的技术效果。
[0282]
上述服务器设备提到的通信总线可以是pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0283]
通信接口用于上述电子设备与其他设备之间的通信。
[0284]
存储器可以包括ram(random access memory,随机存取存储器),也可以包括nvm(non

volatile memory,非易失性存储器),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0285]
上述的处理器可以是通用处理器,包括cpu(central processing unit,中央处理器)、np(network processor,网络处理器)等;还可以是dsp(digital signal processing,数字信号处理器)、asic(application specific integrated circuit,专用集成电路)、fpga(field

programmable gate array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0286]
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一一种软件授权加密或解密方法的步骤,并达到相同的技术效果。
[0287]
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一一种软件授权加密或解密方法的步骤,并达到相同的技术效果。
[0288]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、dsl(digital subscriber line,数字用户线))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd(digital versatile disc,数字多功能光盘))、或者半导体介质(例如ssd(solid state disk,固态硬盘))等。
[0289]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0290]
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置/系统/电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0291]
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发
明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1