CN105808979B - 一种改进的Android软件安装包的签名和验签方法 - Google Patents
一种改进的Android软件安装包的签名和验签方法 Download PDFInfo
- Publication number
- CN105808979B CN105808979B CN201610126599.2A CN201610126599A CN105808979B CN 105808979 B CN105808979 B CN 105808979B CN 201610126599 A CN201610126599 A CN 201610126599A CN 105808979 B CN105808979 B CN 105808979B
- Authority
- CN
- China
- Prior art keywords
- information
- signing messages
- installation kit
- customized information
- text
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000001629 sign test Methods 0.000 title claims abstract description 8
- 238000009434 installation Methods 0.000 claims abstract description 29
- 238000012857 repacking Methods 0.000 claims description 3
- 229910002056 binary alloy Inorganic materials 0.000 claims description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
一种改进的Android软件安装包签名和验签方法。将软件内容和定制信息分离,从而进行各自独立的签名。不同于前面介绍的常用方法,本方法不需要将定制信息整合进软件内容中重新打包签名,而是对Android的APK安装包进行了文件扩展,在不影响原有APK文件结构和内容的前提下进行的。所以使用本方法生成的安装包不仅可以在任何的Android系统中安装使用,在应用程序中仍然可以读取并校验扩展的定制信息,从而达到了解决了旧有方法存在的各种问题。
Description
技术领域
本发明涉及移动应用/移动游戏开发技术领域。
背景技术
手机软件(手机游戏)在发行时需要在安装包文件中追加一些额外的定制信息,比如渠道信息——用以标识不同的发行渠道,方便游戏开发商(以下简称开发商)跟踪统计各个渠道的推广情况。目前有两种方法添加这类定制信息:
一种方法是发行商(如游戏基地)将自己的发行渠道信息交给开发商,由开发商将这些信息和游戏内容一起打包后进行重新签名安装包。这种方法对于开发商来说较为繁琐,如果有爱游戏、安卓市场、其他应用商店等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系统中安装使用,在应用程序中仍然可以读取并校验扩展的定制信息,从而达到了解决了旧有方法存在的各种问题。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (10)
1.一种改进的Android软件安装包的签名方法,包括以下步骤:
1)准备好需要写入的定制信息,对准备好的定制信息进行RSA非对称加密,生成密文信息;
2)运用MD5单向散列算法对生成的密文信息进行运算,生成的MD5值即为签名信息;
3)将生成的所述密文信息通过Base64编码算法转换成文本格式的密文数据,并计算所述密文数据长度和所述签名信息长度;
4)在待添加定制信息和签名信息的安装包的文件尾部写入开始标记,然后依次写入计算得到的所述密文数据长度的信息、所述文本格式的密文数据、所述签名信息长度的信息、签名信息;由此,生成新安装包。
2.根据权利要求1所述的签名方法,其中,所述待添加定制信息和签名信息的安装包具有扩展位,所述扩展位位于待添加定制信息和签名信息的安装包的文件尾部,所述密文数据长度的信息、所述文本格式的密文数据、所述签名信息长度的信息、签名信息写入所述扩展位,从而安装包的开发商不需要通过重新打包签名来将定制信息整合进软件内容中。
3.根据权利要求2所述的签名方法,其中,所述待添加定制信息和签名信息的安装包内已包括开发商的签名信息,所述步骤2)中运用MD5单向散列算法生成的签名信息为发行商的签名信息。
4.根据权利要求3所述的签名方法,其中,所述步骤4)生成的新安装包具有开发商的签名信息和发行商的签名信息。
5.根据权利要求3所述的签名方法,其中,所述待添加定制信息和签名信息的安装包内还包括安装文件。
6.根据权利要求3所述的签名方法,其中,所述步骤4)生成的新安装包包括:开发商的签名信息、发行商的签名信息、安装文件以及对定制信息进行加密、编码运算得到的密文数据。
7.根据权利要求6所述的签名方法,其中,所述步骤4)生成的新安装包能够在任何的Android系统中安装使用。
8.根据权利要求7所述的签名方法,其中,在所述Android软件中仍然能够读取所述步骤4)生成的新安装包并校验其定制信息。
9.根据权利要求1所述的签名方法,其中,所述步骤1)中的定制信息是文本或二进制流。
10.一种改进的Android软件安装包的验签方法,用于验证使用权利要求1所述的改进的Android软件安装包的签名方法所生成的新安装包,包括以下步骤:
读取开始标记信息;
读入所述密文数据长度的信息,根据所述密文数据长度的信息读取所述文本格式的密文数据;
读入所述签名信息长度的信息,再根据所述签名信息长度的信息读取签名信息;
验证签名信息,验证通过后,对所述文本格式的密文数据进行解码运算,得到所述密文信息;
基于RSA非对称加密运算,对所述密文信息进行解密,得到明文的定制信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610126599.2A CN105808979B (zh) | 2016-03-07 | 2016-03-07 | 一种改进的Android软件安装包的签名和验签方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610126599.2A CN105808979B (zh) | 2016-03-07 | 2016-03-07 | 一种改进的Android软件安装包的签名和验签方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105808979A CN105808979A (zh) | 2016-07-27 |
CN105808979B true CN105808979B (zh) | 2016-12-07 |
Family
ID=56466723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610126599.2A Active CN105808979B (zh) | 2016-03-07 | 2016-03-07 | 一种改进的Android软件安装包的签名和验签方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105808979B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106843962A (zh) * | 2017-01-19 | 2017-06-13 | 北京乐盟互动科技有限公司 | 一种应用打包方法及装置 |
CN108064383A (zh) * | 2017-10-25 | 2018-05-22 | 福建联迪商用设备有限公司 | 一种应用程序权限的管控方法、终端及pos终端 |
CN109344605B (zh) * | 2018-09-10 | 2022-04-05 | 惠尔丰(中国)信息系统有限公司 | 一种智能pos机的权限控制方法及其控制系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050188203A1 (en) * | 2004-02-19 | 2005-08-25 | Jp Mobile Operating L.P. | Method for packaging information with digitally signed software without breaking signature |
CN102024127B (zh) * | 2010-11-17 | 2012-09-19 | 中国联合网络通信集团有限公司 | 应用软件控制平台、使用者终端、分发系统及方法 |
CN102546604B (zh) * | 2011-12-22 | 2014-12-24 | 四川长虹电器股份有限公司 | 智能电视应用程序安全控制方法 |
CN104092544B (zh) * | 2014-06-26 | 2017-11-17 | 工业和信息化部计算机与微电子发展研究中心(中国软件评测中心) | 兼容安卓应用的服务签名方法与装置 |
-
2016
- 2016-03-07 CN CN201610126599.2A patent/CN105808979B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105808979A (zh) | 2016-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104503745B (zh) | 一种生成应用渠道包的方法和装置 | |
CN109214168A (zh) | 固件升级方法及装置 | |
CN105808979B (zh) | 一种改进的Android软件安装包的签名和验签方法 | |
CN106656513B (zh) | 安卓平台上apk文件的二次打包签名验证方法 | |
CN103810421B (zh) | 应用程序的校验方法、装置和终端设备 | |
CN108196851A (zh) | 应用发布方法及装置 | |
CN105706048A (zh) | 使用硬件信任根的媒体客户端装置鉴权 | |
CN104156638A (zh) | 一种面向安卓系统软件的扩展签名的实现方法 | |
CN105956456A (zh) | 一种对Android系统进行四重联合签名验证的实现方法 | |
CN105608145A (zh) | 基于下载渠道统计应用软件的下载量的方法及装置 | |
CN107980132A (zh) | 一种apk签名认证方法及系统 | |
CN101626293B (zh) | 一种数据加密保护及解密方法 | |
CN104573527A (zh) | 一种基于更新安全机制的uefi系统更新方法 | |
CN104426658A (zh) | 对移动终端上的应用进行身份验证的方法及装置 | |
CN105893837B (zh) | 应用程序安装方法、安全加密芯片及终端 | |
CN109586920A (zh) | 一种可信验证方法及装置 | |
CN110414190A (zh) | 应用安装包的签名方法、相关装置、存储介质及电子设备 | |
CN110502920A (zh) | 基于区块链的生产任务执行方法、装置和设备 | |
CN109145639A (zh) | 文件加密方法、解密方法及装置 | |
CN111339201A (zh) | 基于区块链的测评方法及系统 | |
CN112560017A (zh) | 一种使用三级证书认证实现apk统一签名的方法 | |
CN110021291A (zh) | 一种语音合成文件的调用方法及装置 | |
CN112506878A (zh) | 文件处理方法、装置、存储介质及电子设备 | |
CN115840787A (zh) | 基于区块链的供应链数据共享方法、装置、设备及介质 | |
US20070244820A1 (en) | Securely Providing Advertising Subsidized Computer Usage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |