发明内容
本发明所要解决的技术问题是提供一种Web软件的升级方法及装置,它能够提高软件升级的安全性。
为解决上述技术问题,本发明提供了一种Web软件的升级方法,包括:
在升级服务器端:
由原始升级包生成升级序列集;
对所述原始升级包和所述升级序列集进行加密,得到加密后的升级包和升级序列集;
在本地服务器端:
对所述加密后的升级包和升级序列集进行解密,得到解密后的升级包和升级序列集;
将所述解密后的升级包中包含的文件和所述解密后的升级序列集中的文件信息进行比较;
若不匹配,停止升级;
若匹配成功,根据升级文件进行升级。
进一步地,所述对所述原始升级包和所述升级序列集进行加密,得到加密后的升级包和升级序列集,包括:
对所述原始升级包和所述升级序列集进行位运算、字符串运算、与扩展密钥进行异或运算,得到所述加密后的原始升级包和升级序列集;
所述对所述加密后的升级包和升级序列集进行解密,得到解密后的升级包和升级序列集,包括:
对所述加密后的升级包和升级序列集与扩展密钥进行异或运算、反字符串运算、反位运算,得到所述解密后的升级包和升级序列集。
进一步地,还包括:
在升级服务器端:
生成所述加密后的升级序列集的标识码和Key钥;
对所述Key钥进行加密,得到加密后的Key钥;
对所述加密后的Key钥进行混淆,得到混淆后的Key钥;将所述混淆后的Key钥与所述加密后的升级序列集的标识码组合,得到混淆加密后的Key钥;
在本地服务器端:
对所述混淆加密后的Key钥进行反混淆,得到所述加密后的Key钥和加密后的升级序列集的标识码;
将所述在本地服务器端得到的加密后的升级序列集的标识码和在升级服务器端生成的加密后的升级序列集的标识码进行比较;
若不匹配,停止升级;
若匹配成功,对所述加密后的升级包和升级序列集进行解密。
进一步地,所述生成所述加密后的升级序列集的Key钥,包括:
对所述加密后的升级序列集进行映射,生成所述Key钥。
进一步地,还包括:
在升级服务器端:
生成所述加密后的升级序列集的Key钥的标识码;
通过所述Key钥的标识码创建密码本;
所述对所述加密后的Key钥进行混淆,得到混淆后的Key钥,包括:
对所述加密后的Key钥进行位混淆和/或字符串混淆,得到所述混淆后的Key钥;
在本地服务器端:
所述对所述混淆加密后的Key钥进行反混淆,得到所述加密后的Key钥和加密后的升级序列集的标识码,包括:
获取加密后的升级序列集的Key钥的标识码,将获取到的所述Key钥的标识码与所述密码本进行比较;
若不匹配,停止升级;
若匹配成功,对混淆加密后的Key钥进行位反混淆和/或字符串反混淆,得到所述加密后的Key钥和所述加密后的升级序列集的标识码。
本发明提供的Web软件的升级装置,包括:
在升级服务器端:
升级序列集产生模块,用于由原始升级包生成升级序列集;
第一加密模块,用于对所述原始升级包和所述升级序列集进行加密,得到加密后的升级包和升级序列集;
在本地服务器端:
解密模块,用于对所述加密后的升级包和升级序列集进行解密,得到解密后的升级包和升级序列集;
第一匹配模块,用于将所述解密后的升级包中包含的文件和所述解密后的升级序列集中的文件信息进行比较;
升级模块,用于若所述第一匹配模块的比较结果为匹配成功,根据升级文件进行升级。
进一步地,所述第一加密模块,具体用于对所述原始升级包和所述升级序列集进行位运算、字符串运算、与扩展密钥进行异或运算,得到所述加密后的原始升级包和升级序列集;
所述解密模块,具体用于对所述加密后的升级包和升级序列集与扩展密钥进行异或运算、反字符串运算、反位运算,得到所述解密后的升级包和升级序列集。
进一步地,还包括:
在升级服务器端:
第一标识码产生模块,用于生成所述加密后的升级序列集的标识码;
Key钥产生模块,用于生成所述加密后的升级序列集的Key钥;
第二加密模块,用于对所述加密后的升级序列集的Key钥进行加密,得到加密后的Key钥;
混淆执行模块,用于对所述加密后的Key钥进行混淆,得到混淆后的Key钥;
混淆加密Key钥产生模块,用于将所述混淆后的Key钥与所述加密后的升级序列集的标识码组合,得到混淆加密后的Key钥;
在本地服务器端:
反混淆模块,用于对所述混淆加密后的Key钥进行反混淆,得到所述加密后的Key钥和加密后的升级序列集的标识码;
第二匹配模块,用于将所述在本地服务器端得到的加密后的升级序列集的标识码和在升级服务器端生成的加密后的升级序列集的标识码进行比较;
所述解密模块,具体用于若所述第二匹配模块的比较结果为匹配成功,对所述加密后的升级包和升级序列集进行解密,得到解密后的升级包和升级序列集。
进一步地,所述Key钥产生模块,具体用于对所述加密后的升级序列集进行映射,生成所述Key钥。
进一步地,还包括:
在升级服务器端:
第二标识码产生模块,用于生成所述加密后的升级序列集的Key钥的标识码;
密码本产生模块,用于通过所述加密后的升级序列集的Key钥的标识码创建密码本;
所述混淆执行模块,具体用于对所述加密后的Key钥进行位混淆和/或字符串混淆,得到所述混淆后的Key钥;
在本地服务器端:
所述反混淆模块,包括:
比较单元,用于获取加密后的升级序列集的Key钥的标识码,将获取到的所述Key钥的标识码与所述密码本进行比较;
反混淆执行单元,用于若所述比较单元的比较结果为匹配成功,对混淆加密后的Key钥进行位反混淆和/或字符串反混淆,得到所述加密后的Key钥和所述加密后的升级序列集的标识码。
本发明提供的Web软件的升级方法及装置,在升级服务器端,先由原始升级包生成升级序列集,并对原始升级包和升级序列集进行加密得到加密后的升级包和升级序列集。在本地服务器端,对加密后的升级包和升级序列集进行解密得到解密后的升级包和升级序列集;再将解密后的升级包中包含的文件和解密后的升级序列集中的文件信息进行比较,再根据比较结果判断是否进行升级。由于本发明在对数据进行传输时,不仅对数据进行了加密处理,降低了数据被篡改的风险;而且还对得到的升级文件的准确性进行了判定,提高了软件升级的安全性。
具体实施方式
为进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的Web软件的升级方法及装置的具体实施方式及工作原理进行详细说明。
参见图1,本发明实施例提供的Web软件的升级方法,包括:
在升级服务器端:
步骤S110:由原始升级包生成升级序列集;
对本步骤进行说明,先将原始升级包(如patch0630.zip)中升级文件的基本信息整合成升级序列,再将升级序列存放于升级序列集(如path0630.jsons)中。其中,升级文件的基本信息包括:创建时间、大小、文件类型、路径、MD5等等。
步骤S120:对原始升级包和升级序列集进行加密,得到加密后的升级包和升级序列集;
对本步骤进行说明,基于AES加密算法对原始升级包和升级序列集进行加密,具体为对原始升级包和升级序列集进行位运算、字符串运算、与扩展密钥进行异或运算,得到加密后的原始升级包和升级序列集;需要说明的是,本发明实施例也可以通过其他方式对原始升级包和升级序列集进行加密,不仅限于AES加密算法,本发明实施例对此不进行具体的限制。
在本地服务器端:
步骤S130:对加密后的升级包和升级序列集进行解密,得到解密后的升级包和升级序列集;
对本步骤进行说明,对加密后的升级包和升级序列集与扩展密钥进行异或运算、反字符串运算、反位运算,得到解密后的升级包和升级序列集。
步骤S140:将解密后的升级包中包含的文件和解密后的升级序列集中的文件信息进行比较;在本发明实施例中,需要将解密后的升级包中的所有升级文件的所有基本信息与解密后的升级序列集中的所有升级文件的所有基本信息进行比较;
若不匹配,则说明数据已经被篡改,软件升级的安全性下降,停止升级步骤;在本发明实施例中,若有其中任一个升级文件的任一个基本信息不匹配,停止升级;
若匹配成功,则说明数据正常,根据升级文件进行升级。在本发明实施例中,若所有升级文件的所有基本信息均匹配成功,根据升级文件进行升级。
需要说明的是,为了进一步地提高本发明实施例对软件升级的安全性,本发明实施例还可以包括对数据进行混淆和反混淆的步骤。
参见图2,对数据进行混淆的步骤包括:
在升级服务器端:
生成加密后的升级序列集的标识码和Key钥;其中,加密后的升级序列集的标识码为MD5码,如202cb962ac59075b964b07152d234b70。这里需要说明的是,加密后的升级序列集的标识码也可以是其他的唯一标识码,而不仅限于MD5码,本发明实施例对此不进行具体的限制。在本发明实施例中,可以通过对加密后的升级序列集进行映射,生成加密后的升级序列集的Key钥,如:c7-56-f8-88-52-6s-ef。
对加密后的升级序列集的Key钥进行加密,得到加密后的Key钥;
对本步骤进行说明,对加密后的升级序列集的Key钥进行位运算、字符串运算、与扩展密钥进行异或运算,得到加密后的Key钥;需要说明的是,在本步骤中,在对Key钥进行加密时,可以对Key钥进行位运算、字符串运算、与扩展密钥进行异或运算三种运算来实现加密,且三者的顺序不做限制;也可以对Key钥进行这三种运算中的任意一种或两种来实现加密;其中,当对Key钥进行其中任意两种运算来实现加密时,这两种运算的顺序不做限制。本发明实施例不对Key钥的加密步骤做出具体的限制。
对加密后的Key钥进行混淆,得到混淆后的Key钥,如YzctNTYtZjgtODgtNTItNnMtZWY=;将混淆后的Key钥与加密后的升级序列集的标识码组合,得到混淆加密后的Key钥,如202cb962ac59075b964b07152d234b70#YzctNTYtZjgtODgtNTItNnMtZWY=;其中,对加密后的Key钥进行混淆,得到混淆后的Key钥的具体步骤为:对加密后的Key钥进行位混淆和/或字符串混淆,得到混淆后的Key钥;需要说明的是,在本步骤中,对加密后的Key钥进行混淆时,可以既进行位混淆,又进行字符串混淆,两者的顺序不做限制;也可以两者仅执行其一,即仅进行位混淆或字符串混淆。当然,也可以通过其他的混淆方式对加密后的Key钥进行混淆,而不仅仅局限于这两种混淆方式,本发明实施例不对Key钥的混淆步骤做出具体的限制。
对数据进行反混淆的步骤包括:
在本地服务器端:
对混淆加密后的Key钥进行反混淆,得到加密后的Key钥和加密后的升级序列集的标识码;需要说明的是,为了能够对混淆加密后的Key钥进行反混淆,在升级服务器端,还需要生成加密后的升级序列集的Key钥的标识码;并通过该Key钥的标识码创建密码本;其中,加密后的升级序列集的Key钥的标识码为MD5码。当然,Key钥的标识码也可以是其他的唯一标识码,而不仅限于MD5码,本发明实施例对此不进行具体的限制;密码本根据标识码随机打散重新整合,通过Key钥产生的标识码在本发明实施例中匹配唯一密码本,通过密码本可以混淆AES加密Key钥,也可以反混淆得到正确的AES加密Key钥。参见图3,对本步骤进行具体的说明,先获取加密后的升级序列集的Key钥的标识码,再将获取到的Key钥的标识码与在升级服务器端创建的密码本进行比较;若不匹配,则说明Key钥的标识码可能在传输过程中已经被篡改,Key钥非法,软件升级的安全性下降,停止升级步骤;若匹配成功,则说明数据正常,Key钥合法,对混淆加密后的Key钥进行位反混淆和/或字符串反混淆,从而得到加密后的Key钥和加密后的升级序列集的标识码。其中,对混淆加密后的Key钥进行反混淆的步骤为混淆步骤的逆操作,即当只对Key钥进行位混淆时,只对混淆后的Key钥进行位反混淆;当只对Key钥进行字符串混淆时,只对混淆后的Key钥进行字符串反混淆;当对Key钥既进行位混淆,又进行字符串混淆时,对混淆后的Key钥既进行位反混淆,又进行字符串反混淆,反混淆为混淆的逆操作。
将在本地服务器端得到的加密后的升级序列集的标识码和在升级服务器端生成的加密后的升级序列集的标识码进行比较;
若不匹配,停止升级;
若匹配成功,则对加密后的升级包和升级序列集进行解密。
这里需要说明的是,若不对加密后Key钥进行混淆和反混淆的步骤,而仅进行加解密的步骤,则可以不在升级服务器端执行生成加密后的升级序列集的Key钥的标识码、通过该Key钥的标识码创建密码本、对加密后的Key钥进行混淆及对混淆加密后的Key钥进行反混淆的步骤。
最后需要说明的是,若本发明实施例是基于C/S架构的JDK1.6来构建的,在升级服务器端的工作人员将混淆加密后的Key钥、升级包和升级序列集发送到本地服务器端;在本地服务器端的工作人员接收数据,并进行相应的操作;若本发明实施例是基于B/S架构来构建的,在本地服务器端的工作人员则需要从配置服务器下载混淆加密后的Key钥、升级包和升级序列集,并进行相应的操作的。
本发明实施例加密相关API(应用程序接口)的函数为:
Public static byte[]encrypt(String content){}
AES加密函数,将明文文本加密并返回一串数组;
Public static byte[]decrypt(String content){}
AES解密函数,将加密Key钥解密并返回一串数组;
Public static byte[]hexEncrypt(String content){}
混淆算法函数,将Key钥混淆返回一串数组;
Public static byte[]hexDecrypt(String content){}
反混淆算法函数,将混淆Key钥反混淆返回一串数组。
参见图4,本发明实施例提供的Web软件的升级装置,包括:
在升级服务器端:
升级序列集产生模块100,用于由原始升级包生成升级序列集;
在本发明实施例中,升级序列集产生模块100,具体用于将原始升级包(如patch0630.zip)中升级文件的基本信息整合成升级序列,再将升级序列存放于升级序列集(如path0630.jsons)中。其中,升级文件的基本信息包括:创建时间、大小、文件类型、路径、MD5等等。
第一加密模块200,用于对原始升级包和升级序列集进行加密,得到加密后的升级包和升级序列集;
在本发明实施例中,第一加密模块200,具体用于对原始升级包和升级序列集进行位运算、字符串运算、与扩展密钥进行异或运算,得到加密后的原始升级包和升级序列集;
在本地服务器端:
解密模块300,用于对加密后的升级包和升级序列集进行解密,得到解密后的升级包和升级序列集;
在本发明实施例中,解密模块300,具体用于对加密后的升级包和升级序列集与扩展密钥进行异或运算、反字符串运算、反位运算,得到解密后的升级包和升级序列集。
第一匹配模块400,用于将解密后的升级包中包含的文件和解密后的升级序列集中的文件信息进行比较;
在本发明实施例中,第一匹配模块400,具体用于将解密后的升级包中的所有升级文件的所有基本信息与解密后的升级序列集中的所有升级文件的所有基本信息进行比较;
中止模块500,用于若第一匹配模块400的比较结果为不匹配,停止升级步骤;
在本发明实施例中,中止模块500,具体用于若第一匹配模块400的比较结果为有任一个升级文件的任一个基本信息不匹配,停止升级;
升级模块600,用于若第一匹配模块400的比较结果为匹配成功,根据升级文件进行升级。
在本发明实施例中,升级模块600,具体用于若第一匹配模块400的比较结果为所有升级文件的所有基本信息均匹配成功,根据升级文件进行升级。
需要说明的是,为了进一步地提高本发明实施例对软件升级的安全性,本发明实施例还可以包括对数据进行混淆和反混淆的功能模块。具体包括:
在升级服务器端:
第一标识码产生模块,用于生成加密后的升级序列集的标识码;其中,加密后的升级序列集的标识码为MD5码,如202cb962ac59075b964b07152d234b70。这里需要说明的是,加密后的升级序列集的标识码也可以是其他的唯一标识码,而不仅限于MD5码,本发明实施例对此不进行具体的限制。
Key钥产生模块,用于生成加密后的升级序列集的Key钥;
在本发明实施例中,Key钥产生模块,具体用于对加密后的升级序列集进行映射,生成加密后的升级序列集的Key钥,如:c7-56-f8-88-52-6s-ef。
第二加密模块,用于对加密后的升级序列集的Key钥进行加密,得到加密后的Key钥;
在本发明实施例中,第二加密模块,具体用于对加密后的升级序列集的Key钥进行位运算、字符串运算、与扩展密钥进行异或运算,得到加密后的Key钥;需要说明的是,在本步骤中,在对Key钥进行加密时,可以对Key钥进行位运算、字符串运算、与扩展密钥进行异或运算三种运算来实现加密,且三者的顺序不做限制;也可以对Key钥进行这三种运算中的任意一种或两种来实现加密;其中,当对Key钥进行其中任意两种运算来实现加密时,这两种运算的顺序不做限制。本发明实施例不对Key钥的加密步骤做出具体的限制。
混淆执行模块,用于对加密后的Key钥进行混淆,得到混淆后的Key钥,如YzctNTYtZjgtODgtNTItNnMtZWY=;
在本发明实施例中,混淆执行模块,具体用于对加密后的Key钥进行位混淆和/或字符串混淆,得到混淆后的Key钥;需要说明的是,在本步骤中,对加密后的Key钥进行混淆时,可以既进行位混淆,又进行字符串混淆,两者的顺序不做限制;也可以两者仅执行其一,即仅进行位混淆或字符串混淆。当然,也可以通过其他的混淆方式对加密后的Key钥进行混淆,而不仅仅局限于这两种混淆方式,本发明实施例不对Key钥的混淆步骤做出具体的限制。
混淆加密Key钥产生模块,用于将混淆后的Key钥与加密后的升级序列集的标识码组合,得到混淆加密后的Key钥,如202cb962ac59075b964b07152d234b70#YzctNTYtZjgtODgtNTItNnMtZWY=;
在本地服务器端:
反混淆模块,用于对混淆加密后的Key钥进行反混淆,得到加密后的Key钥和加密后的升级序列集的标识码;
需要说明的是,为了能够对混淆加密后的Key钥进行反混淆,在升级服务器端,还需要包括:
第二标识码产生模块,用于生成加密后的升级序列集的Key钥的标识码;其中,加密后的升级序列集的Key钥的标识码为MD5码。当然,Key钥的标识码也可以是其他的唯一标识码,而不仅限于MD5码,本发明实施例对此不进行具体的限制;
密码本产生模块,用于通过加密后的升级序列集的Key钥的标识码创建密码本;其中,密码本根据标识码随机打散重新整合,通过Key钥产生的标识码在本发明实施例中匹配唯一密码本,通过密码本可以混淆AES加密Key钥,也可以反混淆得到正确的AES加密Key钥。
由此可知,在本发明实施例中,反混淆模块,包括:
比较单元,用于获取加密后的升级序列集的Key钥的标识码,将获取到的Key钥的标识码与密码本进行比较;
中止单元,用于若比较单元的比较结果为不匹配,停止升级步骤;
反混淆执行单元,用于若比较单元的比较结果为匹配成功,对混淆加密后的Key钥进行位反混淆和/或字符串反混淆,得到加密后的Key钥和加密后的升级序列集的标识码。其中,对混淆加密后的Key钥进行反混淆的步骤为混淆步骤的逆操作,即当只对Key钥进行位混淆时,只对混淆后的Key钥进行位反混淆;当只对Key钥进行字符串混淆时,只对混淆后的Key钥进行字符串反混淆;当对Key钥既进行位混淆,又进行字符串混淆时,对混淆后的Key钥既进行位反混淆,又进行字符串反混淆,反混淆为混淆的逆操作。
第二匹配模块,用于将在本地服务器端得到的加密后的升级序列集的标识码和在升级服务器端生成的加密后的升级序列集的标识码进行比较;
中断模块,用于若第二匹配模块的比较结果为不匹配,停止升级;
解密模块,具体用于若第二匹配模块的比较结果为匹配成功,对加密后的升级包和升级序列集进行解密,得到解密后的升级包和升级序列集。
这里需要说明的是,若不对加密后Key钥进行混淆和反混淆的步骤,而仅进行加解密的步骤,则可以不包括混淆执行模块、混淆加密Key钥产生模块、反混淆模块、第二标识码产生模块和密码本产生模块,本发明实施例为包括这几个功能模块的优选实施例。
最后需要说明的是,若本发明实施例是基于C/S架构的JDK1.6来构建的,在升级服务器端的工作人员将混淆加密后的Key钥、升级包和升级序列集发送到本地服务器端;在本地服务器端的工作人员接收数据,并进行相应的操作;若本发明实施例是基于B/S架构来构建的,在本地服务器端的工作人员则需要从配置服务器下载混淆加密后的Key钥、升级包和升级序列集,并进行相应的操作的。
本发明实施例加密相关API(应用程序接口)的函数为:
Public static byte[]encrypt(String content){}
AES加密函数,将明文文本加密并返回一串数组;
Public static byte[]decrypt(String content){}
AES解密函数,将加密Key钥解密并返回一串数组;
Public static byte[]hexEncrypt(String content){}
混淆算法函数,将Key钥混淆返回一串数组;
Public static byte[]hexDecrypt(String content){}
反混淆算法函数,将混淆Key钥反混淆返回一串数组。
本发明实施例提供的Web软件的升级方法及装置,在升级服务器端,先由原始升级包生成升级序列集,并对原始升级包和升级序列集进行加密得到加密后的升级包和升级序列集。在本地服务器端,对加密后的升级包和升级序列集进行解密得到解密后的升级包和升级序列集;再将解密后的升级包中包含的文件和解密后的升级序列集中的文件信息进行比较,再根据比较结果判断是否进行升级。由于本发明在对数据进行传输时,不仅对数据进行了加密处理,降低了数据被篡改的风险;而且还对得到的升级文件的准确性进行了判定,提高了软件升级的安全性。另外,为了进一步地提高软件升级的安全性,本发明实施例还包括对数据进行混淆和反混淆的步骤,实现了对数据分别进行加密和混淆的两重处理,确保数据即便在被非法截取后,截取者也不能掌握密钥的加密方式,从而降低了数据被破解的风险,进一步降低了数据被篡改的风险,保护了原始数据,进而进一步地提高了软件升级的安全性。此外,由于本发明实施例可以基于C/S架构的JDK1.6来构建,所提供的软件升级方式不同于现有的在Web软件服务端存入完整升级包,手动调用工具解析升级包进行升级的升级方式,因此还避免了升级不及时和数据丢失的情况的发生。
最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。