一种改进的Android软件安装包的签名和验签方法与流程

文档序号:11809741阅读:531来源:国知局
一种改进的Android软件安装包的签名和验签方法与流程
本发明涉及移动应用/移动游戏开发技术领域。

背景技术:
手机软件(手机游戏)在发行时需要在安装包文件中追加一些额外的定制信息,比如渠道信息——用以标识不同的发行渠道,方便游戏开发商(以下简称开发商)跟踪统计各个渠道的推广情况。目前有两种方法添加这类定制信息:一种方法是发行商(如游戏基地)将自己的发行渠道信息交给开发商,由开发商将这些信息和游戏内容一起打包后进行重新签名安装包。这种方法对于开发商来说较为繁琐,如果有爱游戏、安卓市场、其他应用商店等10个发行渠道,那么开发商需要嵌入10个渠道的信息,并重新签名10次,这增加了开发商的开发成本和版本管理成本;另一种方法是开发商将游戏内容交给发行商,由发行商添加渠道信息后再使用发行商的签名文件重新签名安装包。但是由于开发商和发行商所使用的签名文件不同,会导致新生成的安装包在安装后无法升级到更新的开发商官方安装包,从而影响了后续的更加完善的游戏版本的及时升级,降低了用户体验。

技术实现要素:
一种改进的Android软件安装包签名和验签方法。将软件内容和定制信息分离,从而进行各自独立的签名。不同于前面介绍的常用方法,本方法不需要将定制信息整合进软件内容中重新打包签名,而是对Android的APK安装包进行了文件扩展,在不影响原有APK文件结构和内容的前提下进行的。所以使用本方法生成的安装包不仅可以在任何的Android系统中安装使用,在应用程序中仍然可以读取并校验扩展的定制信息,从而达到了解决了旧有方法存在的各种问题。本发明公开了一种改进的Android软件安装包的签名方法,包括以下步骤:1)准备好需要写入的定制信息,对准备好的定制信息进行RSA非对称加密,生成密文信息;2)运用MD5单向散列算法对生成的密文信息进行运算,生成的MD5值即为签名信息;3)将生成的所述密文信息通过Base64编码算法转换成文本格式的密文数据,并计算所述密文数据长度和所述签名信息长度;4)在待添加定制信息和签名信息的安装包的文件尾部写入开始标记,然后依次写入计算得到的所述密文数据长度的信息、所述文本格式的密文数据、所述签名信息长度的信息、签名信息;由此,生成新安装包。进一步的,所述待添加定制信息和签名信息的安装包具有扩展位,所述扩展位位于待添加定制信息和签名信息的安装包的文件尾部,所述密文数据长度的信息、所述文本格式的密文数据、所述签名信息长度的信息、签名信息写入所述扩展位,从而安装包的开发商不需要通过重新打包签名来将定制信息整合进软件内容中。进一步的,所述待添加定制信息和签名信息的安装包内已包括开发商的签名信息,所述步骤1)中运用MD5单向散列算法生成的签名信息为发行商的签名信息。进一步的,所述步骤4)生成的新安装包具有开发商的签名信息和发行商的签名信息。进一步的,所述待添加定制信息和签名信息的安装包内还包括安装文件。进一步的,所述步骤4)生成的新安装包包括:开发商的签名信息、发行商的签名信息、安装文件以及对定制信息进行加密、编码运算得到的密文数据。进一步的,所述步骤4)生成的新安装包能够在任何的Android系统中安装使用。进一步的,在应用程序中仍然能够读取所述步骤4)生成的新安装包并校验其定制信息。进一步的,所述步骤1)定制信息是文本或二进制流。在另一实施例中,本发明还包括一种改进的Android软件安装包的验签方法,用于验证使用上述改进的Android软件安装包的签名方法所生成的新安装包,包括以下步骤:1)读取开始标记信息;2)读入所述密文数据长度的信息,根据所述密文数据长度的信息读取所述文本格式的密文数据;3)读入所述签名信息的长度的信息,再根据所述签名信息的长度的信息读取签名信息;4)验证签名信息,验证通过后,对所述文本格式的密文数据进行解码运算,得到所述密文信息;基于RSA非对称加密运算,对所述密文信息进行解密,得到明文的定制信息。附图说明图1:旧有方法一图示。图2:旧有方法二图示。图3:新的改进方法图示。图4:新的签名和验签方法流程图。具体实施方式下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。首先准备好需要写入的定制信息,可以是文本,可以是二进制流。对准备好的定制信息进行RSA非对称加密,然后对生成的二进制密文信息进行MD5数字散列,生成的MD5值即为签名信息。将生成的所述密文信息通过Base64编码算法转换成文本格式的密文数据,并计算所述密文数据长度和所述签名信息长度。在待添加定制信息和签名信息的安装包的文件尾部写入开始标记,然后依次写入计算得到的所述密文数据长度的信息、所述文本格式的密文数据、所述签名信息长度的信息、签名信息;由此,生成新安装包。最后生成的新安装包则具有两组数据和签名信息。进一步的,所述待添加定制信息和签名信息的安装包具有扩展位,所述扩展位位于待添加定制信息和签名信息的安装包的文件尾部,所述密文数据长度的信息、所述文本格式的密文数据、所述签名信息长度的信息、签名信息写入所述扩展位,从而安装包的开发商不需要通过重新打包签名来将定制信息整合进软件内容中。进一步的,所述待添加定制信息和签名信息的安装包内已包括开发商的签名信息,所述步骤1)中运用MD5单向散列算法生成的签名信息为发行商的签名信息。进一步的,所述步骤4)生成的新安装包具有开发商的签名信息和发行商的签名信息。进一步的,所述待添加定制信息和签名信息的安装包内还包括安装文件。进一步的,所述步骤4)生成的新安装包包括:开发商的签名信息、发行商的签名信息、安装文件以及对定制信息进行加密、编码运算得到的密文数据。进一步的,所述步骤4)生成的新安装包能够在任何的Android系统中安装使用。进一步的,在应用程序中仍然能够读取所述步骤4)生成的新安装包并校验其定制信息。读取定制信息和验签的方法和上述过程恰恰相反。首先读到开始标记信息,然后读入所述密文数据长度的信息,根据所述密文数据长度的信息读取所述文本格式的密文数据;接着读入所述签名信息的长度的信息,再根据所述签名信息的长度的信息读取签名信息。随后进行签名验证,签名验证通过后,解开Base64后的文本密文信息,得到二进制密文信息,使用RSA非对称加密解密二进制密文信息,得到明文定制信息。本方法不需要将定制信息整合进软件内容中重新打包签名,而是对Android的APK安装包进行了文件扩展,在不影响原有APK文件结构和内容的前提下进行的。所以使用本方法生成的安装包不仅可以在任何的Android系统中安装使用,在应用程序中仍然可以读取并校验扩展的定制信息,从而达到了解决了旧有方法存在的各种问题。本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1