CN110278115B - 热更新方法及装置 - Google Patents
热更新方法及装置 Download PDFInfo
- Publication number
- CN110278115B CN110278115B CN201910537419.3A CN201910537419A CN110278115B CN 110278115 B CN110278115 B CN 110278115B CN 201910537419 A CN201910537419 A CN 201910537419A CN 110278115 B CN110278115 B CN 110278115B
- Authority
- CN
- China
- Prior art keywords
- encrypted
- script file
- value
- terminal
- file packet
- 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 57
- 239000013598 vector Substances 0.000 claims abstract description 126
- 238000012795 verification Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 8
- 238000000354 decomposition reaction Methods 0.000 claims description 5
- 238000000605 extraction Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012858 packaging process Methods 0.000 description 2
- 230000006798 recombination Effects 0.000 description 2
- 238000005215 recombination Methods 0.000 description 2
- VBMOHECZZWVLFJ-GXTUVTBFSA-N (2s)-2-[[(2s)-6-amino-2-[[(2s)-6-amino-2-[[(2s,3r)-2-[[(2s,3r)-2-[[(2s)-6-amino-2-[[(2s)-2-[[(2s)-6-amino-2-[[(2s)-2-[[(2s)-2-[[(2s)-2,6-diaminohexanoyl]amino]-5-(diaminomethylideneamino)pentanoyl]amino]propanoyl]amino]hexanoyl]amino]propanoyl]amino]hexan Chemical compound NC(N)=NCCC[C@@H](C(O)=O)NC(=O)[C@H](CCCCN)NC(=O)[C@H](CCCCN)NC(=O)[C@H]([C@@H](C)O)NC(=O)[C@H]([C@H](O)C)NC(=O)[C@H](CCCCN)NC(=O)[C@H](C)NC(=O)[C@H](CCCCN)NC(=O)[C@H](C)NC(=O)[C@H](CCCN=C(N)N)NC(=O)[C@@H](N)CCCCN VBMOHECZZWVLFJ-GXTUVTBFSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 108010068904 lysyl-arginyl-alanyl-lysyl-alanyl-lysyl-threonyl-threonyl-lysyl-lysyl-arginine Proteins 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- 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/106—Enforcing content protection by specific content processing
- G06F21/1063—Personalisation
-
- 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/16—Program or content traceability, e.g. by watermarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/082—Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种热更新方法及装置,属于热更新技术领域。其中,热更新方法,应用于服务器,包括:接收终端请求获取应用程序的脚本文件包的更新请求,所述更新请求中携带有终端标识;生成所述应用程序的初始脚本文件包,提取所述初始脚本文件包的加密特征向量,根据所述加密特征向量对所述初始脚本文件包进行加密,生成加密后的脚本文件包;生成所述加密后的脚本文件包的第一MD5值;对所述终端标识和所述加密特征向量的组合进行加密,得到加密特征值;利用所述第一MD5值、所述加密后的脚本文件包和所述加密特征值生成热更新包,并将所述热更新包发送给所述终端。本发明的技术方案能够保证脚本文件的完整性和防篡改性。
Description
技术领域
本发明涉及热更新技术领域,特别是指一种热更新方法及装置。
背景技术
React Native(一款基于JavaScript框架来开发应用程序的开源框架)热更新可以在应用程序不需要重新安装的前提下进行代码和资源的更新。其工作机制是将一系列资源文件打包成bundle文件,应用程序加载bundle文件,进而完成热更新。在相关技术中,React Native热更新时会将所有的js文件(脚本文件)都打包入一个bundle文件中,将整个bundle文件进行发布。如果bundle文件不完整,将导致加载失败,有可能还会导致应用程序的崩溃;如果bundle文件被篡改,有可能会导致应用程序内容的失真。
发明内容
本发明要解决的技术问题是提供一种热更新方法及装置,能够保证脚本文件的完整性和防篡改性。
为解决上述技术问题,本发明的实施例提供技术方案如下:
一方面,提供一种热更新方法,应用于服务器,包括:
接收终端请求获取应用程序的脚本文件包的更新请求,所述更新请求中携带有终端标识;
生成所述应用程序的初始脚本文件包,提取所述初始脚本文件包的加密特征向量,根据所述加密特征向量对所述初始脚本文件包进行加密,生成加密后的脚本文件包;
生成所述加密后的脚本文件包的第一MD5值;
对所述终端标识和所述加密特征向量的组合进行加密,得到加密特征值;
利用所述第一MD5值、所述加密后的脚本文件包和所述加密特征值生成热更新包,并将所述热更新包发送给所述终端。
可选地,所述根据所述加密特征向量对所述初始脚本文件包进行加密之前,所述方法还包括:
在所述初始脚本文件包中加入数字水印信息。
可选地,所述方法还包括:
生成所述应用程序的标识的第二MD5值,并将所述第二MD5值加入所述热更新包。
可选地,所述提取所述初始脚本文件包的加密特征向量,根据所述加密特征向量对所述初始脚本文件包进行加密,生成加密后的脚本文件包包括:
提取所述初始脚本文件包的代码的标识序号和对应的行号,利用所述标识序号和对应的行号组成第一加密数组;
利用随机数对所述标识序号和对应的行号分别进行运算,生成变更后的标识序号以及对应的行号,利用所述变更后的标识序号以及对应的行号组成第二加密数组,所述第一加密数组和所述第二加密数组组成所述加密特征向量;
利用所述第二加密数组对所述初始脚本文件包的代码进行重新排布,得到所述加密后的脚本文件包。
可选地,所述随机数为利用接收所述更新请求的绝对时间生成。
可选地,所述对所述终端标识和所述加密特征向量的组合进行加密,得到加密特征值包括:
将所述终端标识与所述加密特征向量组合,得到一组合值;
利用预设密钥对所述组合值进行加密,得到所述加密特征值,所述预设密钥为所述服务器与所述终端预先约定。
本发明实施例还提供了一种热更新方法,应用于终端,包括:
向服务器发送请求获取应用程序的脚本文件包的更新请求,所述更新请求中携带有终端标识;
接收所述服务器的热更新包,所述热更新包包括加密后的脚本文件包、所述加密后的脚本文件包的第一MD5值和加密特征值,所述加密特征值为对所述终端标识和加密特征向量的组合进行加密后得到;
利用所述第一MD5值对所述加密后的脚本文件包进行验证;
在验证通过后,对所述加密特征值进行解密,获得所述加密特征向量;
利用所述加密特征向量对所述加密后的脚本文件包进行解密,得到所述应用程序的初始脚本文件包。
可选地,所述热更新包还包括所述应用程序的标识的第二MD5值,所述利用所述第一MD5值对所述加密后的脚本文件包进行验证之后还包括:
利用所述第二MD5值对所述加密后的脚本文件包进行验证。
可选地,所述利用所述第一MD5值对所述加密后的脚本文件包进行验证包括:
利用接收到的所述加密后的脚本文件包生成第三MD5值,比较所述第三MD5值与所述第一MD5值是否一致,在所述第三MD5值与所述第一MD5值一致时,验证通过;
所述利用所述第二MD5值对所述加密后的脚本文件包进行验证包括:
利用终端存储的应用程序的标识生成第四MD5值,比较所述第四MD5值与所述第二MD5值是否一致,在所述第四MD5值与所述第二MD5值一致时,验证通过。
可选地,所述对所述加密特征值进行解密,获得所述加密特征向量包括:
利用预设密钥对所述加密特征值进行解密,得到所述终端标识与所述加密特征向量的组合值,所述预设密钥为所述服务器与所述终端预先约定;
利用终端存储的终端标识从所述组合值中截取出所述加密特征向量。
可选地,所述利用所述加密特征向量对所述加密后的脚本文件包进行解密,得到所述应用程序的初始脚本文件包包括:
将所述加密特征向量分解为第一加密数组和第二加密数组,所述第一加密数组由所述初始脚本文件包的代码的标识序号和对应的行号组成,所述第二加密数组由变更后的标识序号以及对应的行号组成;
通过所述第一加密数组和所述第二加密数组的对应关系确定所述初始脚本文件包的代码的标识序号和对应的行号,并利用所述标识序号和对应的行号将所述加密后的脚本文件包恢复为所述初始脚本文件包。
可选地,所述初始脚本文件包中包括有数字水印信息,所述得到所述应用程序的初始脚本文件包之后,还包括:
利用所述数字水印信息验证所述初始脚本文件包是否合法;
在所述初始脚本文件包合法时,加载所述初始脚本文件包。
本发明实施例还提供了一种热更新装置,应用于服务器,包括:
接收模块,用于接收终端请求获取应用程序的脚本文件包的更新请求,所述更新请求中携带有终端标识;
第一加密模块,用于生成所述应用程序的初始脚本文件包,提取所述初始脚本文件包的加密特征向量,根据所述加密特征向量对所述初始脚本文件包进行加密,生成加密后的脚本文件包;
第一MD5值生成模块,用于生成所述加密后的脚本文件包的第一MD5值;
第二加密模块,用于对所述终端标识和所述加密特征向量的组合进行加密,得到加密特征值;
发送模块,用于利用所述第一MD5值、所述加密后的脚本文件包和所述加密特征值生成热更新包,并将所述热更新包发送给所述终端。
可选地,所述装置还包括:
水印模块,用于在所述初始脚本文件包中加入数字水印信息。
可选地,所述装置还包括:
第二MD5值生成模块,用于生成所述应用程序的标识的第二MD5值,并将所述第二MD5值加入所述热更新包。
可选地,所述第一加密模块包括:
提取单元,用于提取所述初始脚本文件包的代码的标识序号和对应的行号,利用所述标识序号和对应的行号组成第一加密数组;
运算单元,用于利用随机数对所述标识序号和对应的行号分别进行运算,生成变更后的标识序号以及对应的行号,利用所述变更后的标识序号以及对应的行号组成第二加密数组,所述第一加密数组和所述第二加密数组组成所述加密特征向量;
处理单元,用于利用所述第二加密数组对所述初始脚本文件包的代码进行重新排布,得到所述加密后的脚本文件包。
可选地,所述第二加密模块包括:
组合单元,用于将所述终端标识与所述加密特征向量组合,得到一组合值;
加密单元,用于利用预设密钥对所述组合值进行加密,得到所述加密特征值,所述预设密钥为所述服务器与所述终端预先约定。
本发明实施例还提供了一种热更新装置,应用于终端,包括:
发送模块,用于向服务器发送请求获取应用程序的脚本文件包的更新请求,所述更新请求中携带有终端标识;
接收模块,用于接收所述服务器的热更新包,所述热更新包包括加密后的脚本文件包、所述加密后的脚本文件包的第一MD5值和加密特征值,所述加密特征值为对所述终端标识和加密特征向量的组合进行加密后得到;
验证模块,用于利用所述第一MD5值对所述加密后的脚本文件包进行验证;
第一解密模块,用于在验证通过后,对所述加密特征值进行解密,获得所述加密特征向量;
第二解密模块,用于利用所述加密特征向量对所述加密后的脚本文件包进行解密,得到所述应用程序的初始脚本文件包。
可选地,所述热更新包还包括所述应用程序的标识的第二MD5值,所述验证模块还用于利用所述第二MD5值对所述加密后的脚本文件包进行验证。
可选地,所述验证模块包括:
第一验证单元,用于利用接收到的所述加密后的脚本文件包生成第三MD5值,比较所述第三MD5值与所述第一MD5值是否一致,在所述第三MD5值与所述第一MD5值一致时,验证通过;
第二验证单元,用于利用终端存储的应用程序的标识生成第四MD5值,比较所述第四MD5值与所述第二MD5值是否一致,在所述第四MD5值与所述第二MD5值一致时,验证通过。
可选地,所述第一解密模块包括:
解密单元,用于利用预设密钥对所述加密特征值进行解密,得到所述终端标识与所述加密特征向量的组合值,所述预设密钥为所述服务器与所述终端预先约定;
截取单元,用于利用终端存储的终端标识从所述组合值中截取出所述加密特征向量。
可选地,所述第二解密模块包括:
分解单元,用于将所述加密特征向量分解为第一加密数组和第二加密数组,所述第一加密数组由所述初始脚本文件包的代码的标识序号和对应的行号组成,所述第二加密数组由变更后的标识序号以及对应的行号组成;
处理单元,用于通过所述第一加密数组和所述第二加密数组的对应关系确定所述初始脚本文件包的代码的标识序号和对应的行号,并利用所述标识序号和对应的行号将所述加密后的脚本文件包恢复为所述初始脚本文件包。
可选地,所述初始脚本文件包中包括有数字水印信息,所述装置还包括:
水印验证模块,用于利用所述数字水印信息验证所述初始脚本文件包是否合法;
加载模块,用于在所述初始脚本文件包合法时,加载所述初始脚本文件包。
本发明实施例还提供了一种热更新设备,所述热更新设备包括处理器、存储器以及存储于所述存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的热更新方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的热更新方法的步骤。
本发明的实施例具有以下有益效果:
上述方案中,服务器发给终端的热更新包包括加密后的脚本文件包、加密后的脚本文件包的第一MD5值以及对脚本文件包进行加密的加密特征值;通过对初始脚本文件包提取加密特征向量,并对脚本文件包进行加密,可以有效防止脚本文件包被篡改和恶意拷贝;另外,将加密后的脚本文件包的第一MD5值发送给终端,可以保证加密后的脚本文件包的唯一性和完整性,终端通过对第一MD5值进行验证可以确定接收到的加密后的脚本文件包是否完整,避免终端加载不完整的脚本文件包。
附图说明
图1为本发明实施例应用于服务器的热更新方法的流程示意图;
图2为本发明实施例应用于终端的热更新方法的流程示意图;
图3为本发明实施例热更新方法的流程示意图;
图4为本发明实施例加密和打包的流程示意图;
图5为本发明实施例验证以及解密的流程示意图;
图6为本发明实施例应用于服务器的热更新装置的结构框图;
图7为本发明实施例应用于终端的热更新装置的结构框图;
图8为本发明实施例加入数字水印信息的示意图。
具体实施方式
为使本发明的实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
如何在React Native热更新时,保证bundle文件的完整性和防篡改性,有效避免应用程序的崩溃和程序信息的准确性成为目前需要解决的技术问题。但相关技术对于热更新包的安全和防篡改的加密措施和加密流程涉及较少,另外对于React Native更新包的软件版权问题几乎没有涉猎,而这个也是加载失败,导致程序崩溃,甚至造成程序被篡改,提供非法程序,造成用户信息损失的重要环节。
为了解决上述问题,本发明的实施例提供一种热更新方法及装置,能够保证脚本文件的完整性和防篡改性。
本发明实施例提供一种热更新方法,应用于服务器,如图1所示,包括:
步骤101:接收终端请求获取应用程序的脚本文件包的更新请求,所述更新请求中携带有终端标识;
在终端检测到应用程序需要更新时,会向服务器发送更新请求,其中携带有终端标识,表明是哪个终端请求更新,终端标识唯一代表终端,具体可以为终端的串码。
步骤102:生成所述应用程序的初始脚本文件包,提取所述初始脚本文件包的加密特征向量,根据所述加密特征向量对所述初始脚本文件包进行加密,生成加密后的脚本文件包;
为了保证脚本文件的安全性,服务器会提取出初始脚本文件包信息作为加密特征向量,对初始脚本文件包进行加密。
步骤103:生成所述加密后的脚本文件包的第一MD5值;
为了保证脚本文件的完整性,服务器还会生成加密后的脚本文件包的第一MD5值,终端通过对第一MD5值进行校验,可以判断脚本文件是否完整。
步骤104:对所述终端标识和所述加密特征向量的组合进行加密,得到加密特征值;
为了防止加密特征向量在传输过程中被第三方非法获取,服务器还会对终端标识和加密特征向量的组合进行加密。
步骤105:利用所述第一MD5值、所述加密后的脚本文件包和所述加密特征值生成热更新包,并将所述热更新包发送给所述终端。
为了节省传输资源,服务器可以将所述第一MD5值、所述加密后的脚本文件包和所述加密特征值打包发送给终端。
本实施例中,服务器发给终端的热更新包包括加密后的脚本文件包、加密后的脚本文件包的第一MD5值以及对脚本文件包进行加密的加密特征值;通过对初始脚本文件包提取加密特征向量,并对脚本文件包进行加密,可以有效防止脚本文件包被篡改和恶意拷贝;另外,将加密后的脚本文件包的第一MD5值发送给终端,可以保证加密后的脚本文件包的唯一性和完整性,终端通过对第一MD5值进行验证可以确定接收到的加密后的脚本文件包是否完整,避免终端加载不完整的脚本文件包。
具体地,上述脚本文件包为bundle包。
一具体实施例中,根据加密特征向量对初始脚本文件包进行加密之前,方法还包括:在初始脚本文件包中加入数字水印信息。通过对脚本文件包文件增加数字水印信息,能够对React Native更新包的软件版权进行保护,避免脚本文件包在终端被篡改,并且即使脚本文件包解密后被恶意拷贝到其他设备,也可以通过数字水印信息有效的追究恶意拷贝方。
另一具体实施例中,热更新方法还包括:
生成应用程序的标识的第二MD5值,并将第二MD5值加入热更新包,这样终端通过对第二MD5值进行验证可以确定接收到加密后的脚本文件包是否针对自己所需要更新的应用程序,避免终端加载错误的脚本文件包。
一具体实施例中,提取初始脚本文件包的加密特征向量,根据加密特征向量对初始脚本文件包进行加密,生成加密后的脚本文件包包括:
提取初始脚本文件包的代码的标识序号和对应的行号,利用标识序号和对应的行号组成第一加密数组;
利用随机数对标识序号和对应的行号分别进行运算,生成变更后的标识序号以及对应的行号,利用变更后的标识序号以及对应的行号组成第二加密数组,第一加密数组和第二加密数组组成加密特征向量;
利用第二加密数组对初始脚本文件包的代码进行重新排布,得到加密后的脚本文件包。
上述实施例中,利用初始脚本文件包的代码的标识序号和对应的行号生成加密特征向量,但本发明的技术方案并不局限于采用上述方式生成加密特征向量,还可以采用初始脚本文件包的其他信息生成加密特征向量,并对初始脚本文件包进行加密。
其中,上述随机数可以是随机产生的,也可以按照一定规则产生,一具体示例中,随机数可以为利用接收更新请求的绝对时间生成。具体地,可以利用随机数对标识序号和对应的行号进行相加、相减或求余等运算。
一具体实施例中,对终端标识和加密特征向量的组合进行加密,得到加密特征值包括:
将终端标识与加密特征向量组合,得到一组合值;
利用预设密钥对组合值进行加密,得到加密特征值,预设密钥为服务器与终端预先约定。
终端在接收到加密特征值后,可以利用预设密钥对加密特征值进行解密,得到终端标识与加密特征向量的组合值,之后终端利用自身的终端标识即可从组合值中确定加密特征向量,从而对加密后的脚本文件包进行解密,得到初始脚本文件包。其中,终端标识仅能由终端自身获得,不会被其他终端获取,利用终端标识与加密特征向量组合得到组合值,确保只有正确的接收终端才能从组合值中确定加密特征向量,能够进一步保证脚本文件的安全性。
本发明实施例还提供了一种热更新方法,应用于终端,如图2所示,包括:
步骤201:向服务器发送请求获取应用程序的脚本文件包的更新请求,所述更新请求中携带有终端标识;
在终端检测到应用程序需要更新时,会向服务器发送更新请求,其中携带有终端标识,表明是哪个终端请求更新,终端标识唯一代表终端,具体可以为终端的串码。
步骤202:接收所述服务器的热更新包,所述热更新包包括加密后的脚本文件包、所述加密后的脚本文件包的第一MD5值和加密特征值,所述加密特征值为对所述终端标识和加密特征向量的组合进行加密后得到;
对脚本文件包进行加密可以保证脚本文件的安全性,第一MD5值可以保证脚本文件的完整性。
步骤203:利用所述第一MD5值对所述加密后的脚本文件包进行验证;
终端通过对第一MD5值进行校验,可以判断脚本文件是否完整。
步骤204:在验证通过后,对所述加密特征值进行解密,获得所述加密特征向量;
步骤205:利用所述加密特征向量对所述加密后的脚本文件包进行解密,得到所述应用程序的初始脚本文件包。
本实施例中,在终端向服务器发送更新请求后,服务器发给终端的热更新包包括加密后的脚本文件包、加密后的脚本文件包的第一MD5值以及对脚本文件包进行加密的加密特征值,通过对初始脚本文件包提取加密特征向量,并对脚本文件包进行加密,可以有效防止脚本文件包被篡改和恶意拷贝;另外,将加密后的脚本文件包的第一MD5值发送给终端,可以保证加密后的脚本文件包的唯一性和完整性,终端通过对第一MD5值进行验证可以确定接收到的加密后的脚本文件包是否完整,避免终端加载不完整的脚本文件包。
具体地,上述脚本文件包为bundle包。
一具体实施例中,热更新包还包括应用程序的标识的第二MD5值,利用第一MD5值对加密后的脚本文件包进行验证之后还包括:
利用第二MD5值对加密后的脚本文件包进行验证。这样终端通过对第二MD5值进行验证可以确定接收到加密后的脚本文件包是否针对自己所需要更新的应用程序,避免终端加载错误的脚本文件包。
一具体实施例中,利用第一MD5值对加密后的脚本文件包进行验证包括:
利用接收到的加密后的脚本文件包生成第三MD5值,比较第三MD5值与第一MD5值是否一致,在第三MD5值与第一MD5值一致时,验证通过;
利用第二MD5值对加密后的脚本文件包进行验证包括:
利用终端存储的应用程序的标识生成第四MD5值,比较第四MD5值与第二MD5值是否一致,在第四MD5值与第二MD5值一致时,验证通过。
MD5值唯一代表一个文件,如果文件发生改变,则文件的MD5值必然会发生变化,通过比对MD5值可以判断文件是否发生变化,如果第三MD5值与第一MD5值一致,则说明在传输过程中加密后的脚本文件包没有发生变化;如果第四MD5值与第二MD5值一致,则说明服务器返回的热更新包是针对终端所要更新的应用程序。
一具体实施例中,对加密特征值进行解密,获得加密特征向量包括:
利用预设密钥对加密特征值进行解密,得到终端标识与加密特征向量的组合值,预设密钥为服务器与终端预先约定;
利用终端存储的终端标识从组合值中截取出加密特征向量。
其中,终端标识仅能由终端自身获得,不会被其他终端获取,利用终端标识与加密特征向量组合得到组合值,确保只有正确的接收终端才能从组合值中确定加密特征向量,能够进一步保证脚本文件的安全性。
一具体实施例中,利用加密特征向量对加密后的脚本文件包进行解密,得到应用程序的初始脚本文件包包括:
将加密特征向量分解为第一加密数组和第二加密数组,第一加密数组由初始脚本文件包的代码的标识序号和对应的行号组成,第二加密数组由变更后的标识序号以及对应的行号组成;
通过第一加密数组和第二加密数组的对应关系确定初始脚本文件包的代码的标识序号和对应的行号,并利用标识序号和对应的行号将加密后的脚本文件包恢复为初始脚本文件包。
进一步地,初始脚本文件包中包括有数字水印信息,得到应用程序的初始脚本文件包之后,还包括:
利用数字水印信息验证初始脚本文件包是否合法;
在初始脚本文件包合法时,加载初始脚本文件包。
通过对脚本文件包文件增加数字水印信息,能够对React Native更新包的软件版权进行保护,避免脚本文件包在终端被篡改,并且即使脚本文件包解密后被恶意拷贝到其他设备,也可以通过数字水印信息有效的追究恶意拷贝方。
下面以脚本文件包为bundle包为例,结合终端和服务器的交互流程对本发明的技术方案进行进一步介绍:
如图3所示,本实施例的热更新方法包括以下步骤:
步骤301:终端启动应用程序的版本检测模块,检测是否需要更新应用程序;
步骤302:在需要进行代码和资源的更新时,终端向服务器发送更新请求;
在更新请求中可以携带终端标识和应用程序标识,这样服务器可以获知是哪个终端的哪个应用程序需要更新;
具体地,终端标识可以为本机串码,终端可以通过Java的TelephonyManager类获取本机串码信息,调用更新包检测请求网络接口,向服务器上传本机串码。
步骤303:服务器接收到更新请求后,启动加密和打包流程,生成应用程序的热更新包;
其中,加密和打包可以由服务器内的加密管理系统执行,在该系统中包括有加密模块和打包模块,加密管理系统启动加密模块,由加密模块对应用程序的bundle文件进行加密,并启动打包模块,由打包模块利用加密后的bundle文件生成热更新包。
具体的加密和打包流程如图4所示,包括以下步骤:
步骤401:对初始bundle文件进行解析;
具体地,可以通过文本浏览器打开初始bundle文件的index.android.bundle,分析其组成结构,初始bundle文件包括公共的头部部分、js业务代码、公共的js方法、业务的入口等部分。
步骤402:生成第一加密数组;
具体地,可以将js业务代码、公共的js方法、业务的入口部分的id(标识)序号和行号r提取出来形成第一加密数组Vn,Vn={r1,r2,r3,…,rn,id1,id2,id3,…,idn},其中,r与id一一对应,r1为第一行代码的行号,对应的id序号为id1,r2为第二行代码的行号,对应的id序号为id2,…,rn为第n行代码的行号,对应的id序号为idn。
步骤403:生成第二加密数组;
利用随机数对id序号和对应的行号分别进行运算,生成变更后的id序号和对应的行号,利用变更后的id序号和对应的行号组成第二加密数组Hn,Hn={m1,m2,m3,…,m n,d1,d2,d3,…,dn},其中,m1为对r1进行运算后得到,m2为对r2进行运算后得到,…,mn为对rn进行运算后得到,d1为对id1进行运算后得到,d2为对id2进行运算后得到,…,dn为对idn进行运算后得到。
具体地,可以利用随机数对id序号和对应的行号进行运算,比如将idi与随机数相减,得到di,将ri与随机数相减,得到mi,其中,i为大于0小于等于n的整数。其中,随机数可以根据服务器接收到更新请求的绝对时间生成。
步骤404:生成加密特征向量;
利用第一加密数组Vn和第二加密数组Hn连接组成加密特征向量Wn。
步骤405:在初始bundle包中加入数字水印信息,并利用第二加密数组对初始bundle包的代码进行重新排布,得到加密后的bundle包;
在初始bundle包中加入特定的数字水印信息,生成新的bundle包。具体地,可以根据代码的行号加入数字水印信息,如图8所示,比如行号的值是2的倍数,在对应的代码行后加入“//2@”,行号的是3的倍数,在对应的代码行后加入“//3*”,行号的值是5的倍数,在对应的代码行后加入“//5#”,行号的值是7的倍数,在对应的代码行加入“//7$”,以此类推。
利用第二加密数组对新的bundle包的代码进行重新排布,比如某一行代码的原始行号为ri,在利用随机数对ri进行运算后得到变更后的行号mi,则根据mi对该行代码的位置进行调整,调整后的该行代码的位置为第mi行,以此类推,对新的bundle包的代码均进行重新排布,得到加密后的bundle包。
步骤406:生成热更新包的鉴权文件;
计算加密后的bundle包的MD5值,得到第一MD5值,具体地,可以利用Java中MessageDigest创建MD5转换器,FileInputStream和DigestInputStream创建读入和写入文件流,通过DigestInputStream对象得到一个最终的MessageDigest对象,通过MessageDigest得到加密后的bundle包的32位MD5值。将MD5转换器的输入参数改变为(应用程序APK包名+组织ID+组织URL)计算出32位MD5值,作为应用程序标识的第二MD5值,其中,APK为AndroidPackage,即Android安装包,组织可以为终端所属的公司或机构。
实例化IvParameterSpec对象,使用指定的初始化向量A,实例化SecretKeySpec,将第二MD5值作为传入的密钥,获得其字节数组来构造SecretKeySpec,用Cipher创建"DES/CBC/PKCS5Padding"类型的密码器,用密钥初始化Cipher对象,对(终端标识+加密特征向量)执行加密操作,得到Base64加密的DES值,作为热更新包的唯一加密特征值。
其中,A由加密后的bundle包文件的32位MD5值从前到后取数字填入,保证8位,不够由0补齐,一具体示例中,在第一MD5值为7c01bf65f83fe918e4a7ddc40e3f2682时,得到的A为{7 0 1 6 5 8 3 9}。
利用上述计算得到的第一MD5值、第二MD5值和加密特征值写入到文件形成鉴权文件authentication.android.key。
步骤407:生成热更新包,并对热更新包进行压缩生成压缩包。
利用鉴权文件authentication.android.key、加密后的bundle包文件index.android.bundle以及资源文件生成热更新包,并对热更新包进行压缩生成压缩包。
步骤304:服务器将更新结果发送给终端;
具体地,加密管理系统可以将热更新包的URL(Uniform Resource Locator,统一资源定位符)地址发送给服务器,由服务器向终端返回更新结果,该更新结果中可以携带热更新包的URL地址,以便终端根据该热更新包的URL地址下载热更新包。
步骤305:服务器将热更新包发送给终端;
具体地,终端可以注册更新包下载包监控服务,并根据服务器返回的热更新包的URL地址向服务器请求下载热更新包,服务器可以通过断点续传将热更新包发送给终端。
步骤306:终端接收热更新包,并对热更新包进行验证以及解密,得到应用程序的bundle包,并加载应用程序的bundle包。
为了节省传输资源,服务器发送给终端的热更新包可以是压缩包,终端在接收到压缩后的热更新包后,需要首先进行解压。在解压后,终端能够得到加密后的bundle包、加密后的bundle包的第一MD5值和加密特征值。
具体的验证以及解密流程如图5所示,包括以下步骤:
步骤501:对接收到的压缩包,进行解压缩,生成热更新包;
解压缩后的热更新包包括加密后的bundle包、资源文件和鉴权文件,鉴权文件包括加密后的bundle包的第一MD5值、应用程序标识的第二MD5值和加密特征值,加密特征值为对终端标识和加密特征向量的组合进行加密后得到。
步骤502:对接收到的加密后的bundle包进行验证;
终端可以利用接收到的加密后的bundle包生成第三MD5值,比较第三MD5值与第一MD5值是否一致,在第三MD5值与第一MD5值一致时,终端可以确定接收到的加密后的bundle包是完整的。
利用终端存储的应用程序的标识生成第四MD5值,比较第四MD5值与第二MD5值是否一致,在第四MD5值与第二MD5值一致时,验证通过。
步骤503:在验证通过后,对加密特征值进行解密,获得加密特征向量;
具体地,提取文件中的(终端标识+加密特征向量)的DES值(即加密特征值),先使用Base64解密,实例化IvParameterSpec对象,使用指定的初始化向量A,实例化SecretKeySpec,将第二MD5值作为传入的密钥,获得其字节数组来构造SecretKeySpec,用Cipher创建"DES/CBC/PKCS5Padding"类型的密码器,用密钥初始化Cipher对象,对Base64解密结果执行解密操作,获取解密后的数据:(终端标识+加密特征向量),截取其中的终端标识与本机的终端标识进行对比,在对比通过后,从(终端标识+加密特征向量)中截取加密特征向量Wn;在对比不通过时,不加载bundle包。
其中,A由加密后的bundle包文件的32位MD5值从前到后取数字填入,保证8位,不够由0补齐,一具体示例中,在第一MD5值为7c01bf65f83fe918e4a7ddc40e3f2682时,得到的A为{7 0 1 6 5 8 3 9}。
步骤504:将加密特征向量分为第一加密数组和第二加密数组,利用第一加密数组和第二加密数组对加密后的bundle包进行解密,得到初始bundle包;
将加密特征向量Wn,分成第一加密数组Vn和第二加密数组Hn,利用两个数组的对应关系确定代码在初始bundle包中的行号,比如Vn中ri对应Hn中的mi,Vn中的idi对应Hn中的di,利用上述对应关系可以确定加密后的bundle包中id序号为idi的代码在初始bundle包中的行号为ri,进而可以将加密后的bundle包恢复为正常序列,得到初始bundle包。
步骤505:利用数字水印信息验证初始bundle包是否合法;
步骤506:在初始bundle包合法时,加载初始bundle包;
步骤507:在初始bundle包不合法时,不加载初始bundle包。
本实施例对整体bundle包进行加密发布,终端对bundle包进行解密和验证可靠性后加载,不需要修改React-Native的源码就可以直接对加入数字水印信息的bundle包进行加载,即使解密后放在本地的bundle包被恶意拷贝到其他设备,也可以通过数字水印进行有效的追究;另外,通过对整体bundle包进行加密,能有效防篡改和保证bundle包的完整性。
本发明实施例还提供了一种热更新装置,应用于服务器,如图6所示,包括:
接收模块11,用于接收终端请求获取应用程序的脚本文件包的更新请求,所述更新请求中携带有终端标识;
第一加密模块12,用于生成所述应用程序的初始脚本文件包,提取所述初始脚本文件包的加密特征向量,根据所述加密特征向量对所述初始脚本文件包进行加密,生成加密后的脚本文件包;
第一MD5值生成模块13,用于生成所述加密后的脚本文件包的第一MD5值;
第二加密模块14,用于对所述终端标识和所述加密特征向量的组合进行加密,得到加密特征值;
发送模块15,用于利用所述第一MD5值、所述加密后的脚本文件包和所述加密特征值生成热更新包,并将所述热更新包发送给所述终端。
本实施例中,服务器发给终端的热更新包包括加密后的脚本文件包、加密后的脚本文件包的第一MD5值以及对脚本文件包进行加密的加密特征值;通过对初始脚本文件包提取加密特征向量,并对脚本文件包进行加密,可以有效防止脚本文件包被篡改和恶意拷贝;另外,将加密后的脚本文件包的第一MD5值发送给终端,可以保证加密后的脚本文件包的唯一性和完整性,终端通过对第一MD5值进行验证可以确定接收到的加密后的脚本文件包是否完整,避免终端加载不完整的脚本文件包。
可选地,所述装置还包括:
水印模块,用于在所述初始脚本文件包中加入数字水印信息。通过对脚本文件包文件增加数字水印信息,能够对React Native更新包的软件版权进行保护,避免脚本文件包在终端被篡改,并且即使脚本文件包解密后被恶意拷贝到其他设备,也可以通过数字水印信息有效的追究恶意拷贝方。
可选地,所述装置还包括:
第二MD5值生成模块,用于生成所述应用程序的标识的第二MD5值,并将所述第二MD5值加入所述热更新包,这样终端通过对第二MD5值进行验证可以确定接收到加密后的脚本文件包是否针对自己所需要更新的应用程序,避免终端加载错误的脚本文件包。
可选地,所述第一加密模块包括:
提取单元,用于提取所述初始脚本文件包的代码的标识序号和对应的行号,利用所述标识序号和对应的行号组成第一加密数组;
运算单元,用于利用随机数对所述标识序号和对应的行号分别进行运算,生成变更后的标识序号以及对应的行号,利用所述变更后的标识序号以及对应的行号组成第二加密数组,所述第一加密数组和所述第二加密数组组成所述加密特征向量;
处理单元,用于利用所述第二加密数组对所述初始脚本文件包的代码进行重新排布,得到所述加密后的脚本文件包。
上述实施例中,利用初始脚本文件包的代码的标识序号和对应的行号生成加密特征向量,但本发明的技术方案并不局限于采用上述方式生成加密特征向量,还可以采用初始脚本文件包的其他信息生成加密特征向量。
其中,上述随机数可以是随机产生的,也可以按照一定规则产生,一具体示例中,所述随机数可以为利用接收所述更新请求的绝对时间生成。
可选地,所述第二加密模块包括:
组合单元,用于将所述终端标识与所述加密特征向量组合,得到一组合值;
加密单元,用于利用预设密钥对所述组合值进行加密,得到所述加密特征值,所述预设密钥为所述服务器与所述终端预先约定。
终端在接收到加密特征值后,可以利用预设密钥对加密特征值进行解密,得到终端标识与加密特征向量的组合值,之后终端利用自身的终端标识即可从组合值中确定加密特征向量,从而对加密后的脚本文件包进行解密,得到初始脚本文件包。其中,终端标识仅能由终端自身获得,不会被其他终端获取,利用终端标识与加密特征向量组合得到组合值,确保只有正确的接收终端才能从组合值中确定加密特征向量,能够进一步保证脚本文件的安全性。具体地,终端标识可以为终端的串码。
本发明实施例还提供了一种热更新装置,应用于终端,如图7所示,包括:
发送模块21,用于向服务器发送请求获取应用程序的脚本文件包的更新请求,所述更新请求中携带有终端标识;
接收模块22,用于接收所述服务器的热更新包,所述热更新包包括加密后的脚本文件包、所述加密后的脚本文件包的第一MD5值和加密特征值,所述加密特征值为对所述终端标识和加密特征向量的组合进行加密后得到;
验证模块23,用于利用所述第一MD5值对所述加密后的脚本文件包进行验证;
第一解密模块24,用于在验证通过后,对所述加密特征值进行解密,获得所述加密特征向量;
第二解密模块25,用于利用所述加密特征向量对所述加密后的脚本文件包进行解密,得到所述应用程序的初始脚本文件包。
本实施例中,在终端向服务器发送更新请求后,服务器发给终端的热更新包包括加密后的脚本文件包、加密后的脚本文件包的第一MD5值以及对脚本文件包进行加密的加密特征值,通过对初始脚本文件包提取加密特征向量,并对脚本文件包进行加密,可以有效防止脚本文件包被篡改和恶意拷贝;另外,将加密后的脚本文件包的第一MD5值发送给终端,可以保证加密后的脚本文件包的唯一性和完整性,终端通过对第一MD5值进行验证可以确定接收到的加密后的脚本文件包是否完整,避免终端加载不完整的脚本文件包。
可选地,所述热更新包还包括所述应用程序的标识的第二MD5值,所述验证模块还用于利用所述第二MD5值对所述加密后的脚本文件包进行验证。这样终端通过对第二MD5值进行验证可以确定接收到加密后的脚本文件包是否针对自己所需要更新的应用程序,避免终端加载错误的脚本文件包。
可选地,所述验证模块包括:
第一验证单元,用于利用接收到的所述加密后的脚本文件包生成第三MD5值,比较所述第三MD5值与所述第一MD5值是否一致,在所述第三MD5值与所述第一MD5值一致时,验证通过;
第二验证单元,用于利用终端存储的应用程序的标识生成第四MD5值,比较所述第四MD5值与所述第二MD5值是否一致,在所述第四MD5值与所述第二MD5值一致时,验证通过。
可选地,所述第一解密模块包括:
解密单元,用于利用预设密钥对所述加密特征值进行解密,得到所述终端标识与所述加密特征向量的组合值,所述预设密钥为所述服务器与所述终端预先约定;
截取单元,用于利用终端存储的终端标识从所述组合值中截取出所述加密特征向量。
其中,终端标识仅能由终端自身获得,不会被其他终端获取,利用终端标识与加密特征向量组合得到组合值,确保只有正确的接收终端才能从组合值中确定加密特征向量,能够进一步保证脚本文件的安全性。具体地,终端标识可以为终端的串码。
可选地,所述第二解密模块包括:
分解单元,用于将所述加密特征向量分解为第一加密数组和第二加密数组,所述第一加密数组由所述初始脚本文件包的代码的标识序号和对应的行号组成,所述第二加密数组由变更后的标识序号以及对应的行号组成;
处理单元,用于通过所述第一加密数组和所述第二加密数组的对应关系确定所述初始脚本文件包的代码的标识序号和对应的行号,并利用所述标识序号和对应的行号将所述加密后的脚本文件包恢复为所述初始脚本文件包。
可选地,所述初始脚本文件包中包括有数字水印信息,所述装置还包括:
水印验证模块,用于利用所述数字水印信息验证所述初始脚本文件包是否合法;
加载模块,用于在所述初始脚本文件包合法时,加载所述初始脚本文件包。
通过对脚本文件包文件增加数字水印信息,能够对React Native更新包的软件版权进行保护,避免脚本文件包在终端被篡改,并且即使脚本文件包解密后被恶意拷贝到其他设备,也可以通过数字水印信息有效的追究恶意拷贝方。
本发明实施例还提供了一种热更新设备,所述热更新设备包括处理器、存储器以及存储于所述存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的热更新方法的步骤。
这里的处理器可以是一个处理器,也可以是多个处理元件的统称,例如,该处理器可以是CPU,也可以是ASIC,或者是被配置成实施以上热更新设备所执行方法的一个或多个集成电路,例如:一个或多个微处理器DSP,或,一个或者多个现场可编程门阵列FPGA等。存储元件可以是一个存储器,也可以是多个存储元件的统称。
存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(ProgrammableROM,PROM)、可擦除可编程只读存储器(ErasablePROM,EPROM)、电可擦除可编程只读存储器(ElectricallyEPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(RandomAccessMemory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(StaticRAM,SRAM)、动态随机存取存储器(DynamicRAM,DRAM)、同步动态随机存取存储器(SynchronousDRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(DoubleDataRateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(EnhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(SynchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambusRAM,DRRAM)。本申请描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的热更新方法的步骤。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
此外,需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行,某些步骤可以并行或彼此独立地执行。对本领域的普通技术人员而言,能够理解本发明的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。
因此,本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。还需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
以上所述的是本发明的优选实施方式,应当指出对于本技术领域的普通人员来说,在不脱离本发明所述的原理前提下还可以作出若干改进和润饰,这些改进和润饰也在本发明的保护范围内。
Claims (17)
1.一种热更新方法,应用于服务器,其特征在于,包括:
接收终端请求获取应用程序的脚本文件包的更新请求,所述更新请求中携带有终端标识;
生成所述应用程序的初始脚本文件包,提取所述初始脚本文件包的加密特征向量,根据所述加密特征向量对所述初始脚本文件包进行加密,生成加密后的脚本文件包;
生成所述加密后的脚本文件包的第一MD5值;
对所述终端标识和所述加密特征向量的组合进行加密,得到加密特征值;
利用所述第一MD5值、所述加密后的脚本文件包和所述加密特征值生成热更新包,并将所述热更新包发送给所述终端;
所述对所述终端标识和所述加密特征向量的组合进行加密,得到加密特征值包括:
将所述终端标识与所述加密特征向量组合,得到一组合值;
利用预设密钥对所述组合值进行加密,得到所述加密特征值,所述预设密钥为所述服务器与所述终端预先约定;
所述根据所述加密特征向量对所述初始脚本文件包进行加密之前,所述方法还包括:
在所述初始脚本文件包中加入数字水印信息,其中,可以根据代码的行号加入数字水印信息;
所述终端标识仅能由终端自身获得,不会被其他终端获取。
2.根据权利要求1所述的热更新方法,其特征在于,所述方法还包括:
生成所述应用程序的标识的第二MD5值,并将所述第二MD5值加入所述热更新包。
3.根据权利要求1所述的热更新方法,其特征在于,所述提取所述初始脚本文件包的加密特征向量,根据所述加密特征向量对所述初始脚本文件包进行加密,生成加密后的脚本文件包包括:
提取所述初始脚本文件包的代码的标识序号和对应的行号,利用所述标识序号和对应的行号组成第一加密数组;
利用随机数对所述标识序号和对应的行号分别进行运算,生成变更后的标识序号以及对应的行号,利用所述变更后的标识序号以及对应的行号组成第二加密数组,所述第一加密数组和所述第二加密数组组成所述加密特征向量;
利用所述第二加密数组对所述初始脚本文件包的代码进行重新排布,得到所述加密后的脚本文件包。
4.根据权利要求3所述的热更新方法,其特征在于,所述随机数为利用接收所述更新请求的绝对时间生成。
5.一种热更新方法,应用于终端,其特征在于,包括:
向服务器发送请求获取应用程序的脚本文件包的更新请求,所述更新请求中携带有终端标识;
接收所述服务器的热更新包,所述热更新包包括加密后的脚本文件包、所述加密后的脚本文件包的第一MD5值和加密特征值,所述加密特征值为对所述终端标识和加密特征向量的组合进行加密后得到;
利用所述第一MD5值对所述加密后的脚本文件包进行验证;
在验证通过后,对所述加密特征值进行解密,获得所述加密特征向量;
利用所述加密特征向量对所述加密后的脚本文件包进行解密,得到所述应用程序的初始脚本文件包;
所述对所述加密特征值进行解密,获得所述加密特征向量包括:
利用预设密钥对所述加密特征值进行解密,得到所述终端标识与所述加密特征向量的组合值,所述预设密钥为所述服务器与所述终端预先约定;
利用终端存储的终端标识从所述组合值中截取出所述加密特征向量;
所述初始脚本文件包中包括有数字水印信息,其中,可以根据代码的行号加入数字水印信息;所述得到所述应用程序的初始脚本文件包之后,还包括:
利用所述数字水印信息验证所述初始脚本文件包是否合法;
在所述初始脚本文件包合法时,加载所述初始脚本文件包;
所述终端标识仅能由终端自身获得,不会被其他终端获取。
6.根据权利要求5所述的热更新方法,其特征在于,所述热更新包还包括所述应用程序的标识的第二MD5值,所述利用所述第一MD5值对所述加密后的脚本文件包进行验证之后还包括:
利用所述第二MD5值对所述加密后的脚本文件包进行验证。
7.根据权利要求6所述的热更新方法,其特征在于,所述利用所述第一MD5值对所述加密后的脚本文件包进行验证包括:
利用接收到的所述加密后的脚本文件包生成第三MD5值,比较所述第三MD5值与所述第一MD5值是否一致,在所述第三MD5值与所述第一MD5值一致时,验证通过;
所述利用所述第二MD5值对所述加密后的脚本文件包进行验证包括:
利用终端存储的应用程序的标识生成第四MD5值,比较所述第四MD5值与所述第二MD5值是否一致,在所述第四MD5值与所述第二MD5值一致时,验证通过。
8.根据权利要求5所述的热更新方法,其特征在于,所述利用所述加密特征向量对所述加密后的脚本文件包进行解密,得到所述应用程序的初始脚本文件包包括:
将所述加密特征向量分解为第一加密数组和第二加密数组,所述第一加密数组由所述初始脚本文件包的代码的标识序号和对应的行号组成,所述第二加密数组由变更后的标识序号以及对应的行号组成;
通过所述第一加密数组和所述第二加密数组的对应关系确定所述初始脚本文件包的代码的标识序号和对应的行号,并利用所述标识序号和对应的行号将所述加密后的脚本文件包恢复为所述初始脚本文件包。
9.一种热更新装置,应用于服务器,其特征在于,包括:
接收模块,用于接收终端请求获取应用程序的脚本文件包的更新请求,所述更新请求中携带有终端标识;
第一加密模块,用于生成所述应用程序的初始脚本文件包,提取所述初始脚本文件包的加密特征向量,根据所述加密特征向量对所述初始脚本文件包进行加密,生成加密后的脚本文件包;
第一MD5值生成模块,用于生成所述加密后的脚本文件包的第一MD5值;
第二加密模块,用于对所述终端标识和所述加密特征向量的组合进行加密,得到加密特征值;
发送模块,用于利用所述第一MD5值、所述加密后的脚本文件包和所述加密特征值生成热更新包,并将所述热更新包发送给所述终端;
所述第二加密模块包括:
组合单元,用于将所述终端标识与所述加密特征向量组合,得到一组合值;
加密单元,用于利用预设密钥对所述组合值进行加密,得到所述加密特征值,所述预设密钥为所述服务器与所述终端预先约定;
所述装置还包括:
水印模块,用于在所述初始脚本文件包中加入数字水印信息,其中,可以根据代码的行号加入数字水印信息;
所述终端标识仅能由终端自身获得,不会被其他终端获取。
10.根据权利要求9所述的热更新装置,其特征在于,所述装置还包括:
第二MD5值生成模块,用于生成所述应用程序的标识的第二MD5值,并将所述第二MD5值加入所述热更新包。
11.根据权利要求9所述的热更新装置,其特征在于,所述第一加密模块包括:
提取单元,用于提取所述初始脚本文件包的代码的标识序号和对应的行号,利用所述标识序号和对应的行号组成第一加密数组;
运算单元,用于利用随机数对所述标识序号和对应的行号分别进行运算,生成变更后的标识序号以及对应的行号,利用所述变更后的标识序号以及对应的行号组成第二加密数组,所述第一加密数组和所述第二加密数组组成所述加密特征向量;
处理单元,用于利用所述第二加密数组对所述初始脚本文件包的代码进行重新排布,得到所述加密后的脚本文件包。
12.一种热更新装置,应用于终端,其特征在于,包括:
发送模块,用于向服务器发送请求获取应用程序的脚本文件包的更新请求,所述更新请求中携带有终端标识;
接收模块,用于接收所述服务器的热更新包,所述热更新包包括加密后的脚本文件包、所述加密后的脚本文件包的第一MD5值和加密特征值,所述加密特征值为对所述终端标识和加密特征向量的组合进行加密后得到;
验证模块,用于利用所述第一MD5值对所述加密后的脚本文件包进行验证;
第一解密模块,用于在验证通过后,对所述加密特征值进行解密,获得所述加密特征向量;
第二解密模块,用于利用所述加密特征向量对所述加密后的脚本文件包进行解密,得到所述应用程序的初始脚本文件包;
所述第一解密模块包括:
解密单元,用于利用预设密钥对所述加密特征值进行解密,得到所述终端标识与所述加密特征向量的组合值,所述预设密钥为所述服务器与所述终端预先约定;
截取单元,用于利用终端存储的终端标识从所述组合值中截取出所述加密特征向量;
所述初始脚本文件包中包括有数字水印信息,其中,可以根据代码的行号加入数字水印信息;所述装置还包括:
水印验证模块,用于利用所述数字水印信息验证所述初始脚本文件包是否合法;
加载模块,用于在所述初始脚本文件包合法时,加载所述初始脚本文件包;
所述终端标识仅能由终端自身获得,不会被其他终端获取。
13.根据权利要求12所述的热更新装置,其特征在于,所述热更新包还包括所述应用程序的标识的第二MD5值,所述验证模块还用于利用所述第二MD5值对所述加密后的脚本文件包进行验证。
14.根据权利要求13所述的热更新装置,其特征在于,所述验证模块包括:
第一验证单元,用于利用接收到的所述加密后的脚本文件包生成第三MD5值,比较所述第三MD5值与所述第一MD5值是否一致,在所述第三MD5值与所述第一MD5值一致时,验证通过;
第二验证单元,用于利用终端存储的应用程序的标识生成第四MD5值,比较所述第四MD5值与所述第二MD5值是否一致,在所述第四MD5值与所述第二MD5值一致时,验证通过。
15.根据权利要求12所述的热更新装置,其特征在于,所述第二解密模块包括:
分解单元,用于将所述加密特征向量分解为第一加密数组和第二加密数组,所述第一加密数组由所述初始脚本文件包的代码的标识序号和对应的行号组成,所述第二加密数组由变更后的标识序号以及对应的行号组成;
处理单元,用于通过所述第一加密数组和所述第二加密数组的对应关系确定所述初始脚本文件包的代码的标识序号和对应的行号,并利用所述标识序号和对应的行号将所述加密后的脚本文件包恢复为所述初始脚本文件包。
16.一种热更新设备,其特征在于,所述热更新设备包括处理器、存储器以及存储于所述存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至8中任一项所述的热更新方法的步骤。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的热更新方法的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910537419.3A CN110278115B (zh) | 2019-06-20 | 2019-06-20 | 热更新方法及装置 |
PCT/CN2020/092016 WO2020253469A1 (zh) | 2019-06-20 | 2020-05-25 | 脚本文件包的热更新方法及装置 |
US17/295,597 US11797296B2 (en) | 2019-06-20 | 2020-05-25 | Hot updating method of script file package and hot updating device of script file package |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910537419.3A CN110278115B (zh) | 2019-06-20 | 2019-06-20 | 热更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110278115A CN110278115A (zh) | 2019-09-24 |
CN110278115B true CN110278115B (zh) | 2022-11-08 |
Family
ID=67961283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910537419.3A Active CN110278115B (zh) | 2019-06-20 | 2019-06-20 | 热更新方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11797296B2 (zh) |
CN (1) | CN110278115B (zh) |
WO (1) | WO2020253469A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110278115B (zh) | 2019-06-20 | 2022-11-08 | 京东方科技集团股份有限公司 | 热更新方法及装置 |
CN111488169A (zh) * | 2020-04-07 | 2020-08-04 | 网易(杭州)网络有限公司 | 应用程序热更新的方法及装置、存储介质及电子设备 |
CN114726560A (zh) * | 2020-12-22 | 2022-07-08 | 富泰华工业(深圳)有限公司 | 数据保护方法、计算机装置及可读存储介质 |
CN112685077A (zh) * | 2020-12-29 | 2021-04-20 | 平安普惠企业管理有限公司 | 数据修改方法、系统、计算机设备及计算机可读存储介质 |
CN112764827B (zh) * | 2020-12-31 | 2023-04-07 | 重庆广播电视大学重庆工商职业学院 | 一种具有安全验证的Java类热加载方法 |
CN112860650A (zh) * | 2021-02-08 | 2021-05-28 | 广州仪速安电子科技有限公司 | 一种仪器故障告警方法和装置 |
CN113448611B (zh) * | 2021-08-31 | 2021-11-30 | 中邮消费金融有限公司 | 一种应用程序快速热更新的方法及系统 |
CN114528529A (zh) * | 2022-02-15 | 2022-05-24 | 广州经传多赢投资咨询有限公司 | 一种内存xml文件加密方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105050081A (zh) * | 2015-08-19 | 2015-11-11 | 腾讯科技(深圳)有限公司 | 网络接入设备接入无线网络接入点的方法、装置和系统 |
WO2016019790A1 (zh) * | 2014-08-04 | 2016-02-11 | 优视科技有限公司 | 一种安装包的校验方法、客户端、服务器及系统 |
CN108710500A (zh) * | 2018-05-23 | 2018-10-26 | 北京五八信息技术有限公司 | 资源发布方法、更新方法和装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101924607B (zh) * | 2010-08-27 | 2013-01-23 | 华为终端有限公司 | 基于固件空中传输技术的固件处理方法、装置及系统 |
CN103235906B (zh) | 2013-03-27 | 2016-01-13 | 广东欧珀移动通信有限公司 | 一种应用程序加密、解密方法及加密、解密装置 |
CN106415491B (zh) * | 2015-03-20 | 2020-01-21 | 华为技术有限公司 | 一种应用保护方法、服务器以及终端 |
CN106155729B (zh) | 2015-04-21 | 2020-02-14 | 阿里巴巴集团控股有限公司 | Lua脚本热更新方法、装置及系统 |
CN105260209A (zh) | 2015-10-20 | 2016-01-20 | 珠海金山网络游戏科技有限公司 | 一种程序热更新解决方法 |
US10958435B2 (en) | 2015-12-21 | 2021-03-23 | Electro Industries/ Gauge Tech | Providing security in an intelligent electronic device |
CN107179925A (zh) | 2017-04-14 | 2017-09-19 | 北京五八信息技术有限公司 | 热更新方法及装置 |
CN107391104B (zh) | 2017-05-31 | 2021-06-01 | 杭州大搜车汽车服务有限公司 | 一种客户端与react native代码的更新依赖管理方法、装置及系统 |
CN107729041B (zh) | 2017-07-26 | 2020-10-20 | 深圳壹账通智能科技有限公司 | 应用程序热更新方法、装置、终端和存储介质 |
CN109740309B (zh) * | 2018-12-28 | 2023-06-30 | 深圳市元征科技股份有限公司 | 一种文件保护方法以及装置 |
CN109800009A (zh) * | 2019-01-15 | 2019-05-24 | 科大国创软件股份有限公司 | 混合型App功能模块的热更新方法及系统 |
CN110278115B (zh) * | 2019-06-20 | 2022-11-08 | 京东方科技集团股份有限公司 | 热更新方法及装置 |
-
2019
- 2019-06-20 CN CN201910537419.3A patent/CN110278115B/zh active Active
-
2020
- 2020-05-25 US US17/295,597 patent/US11797296B2/en active Active
- 2020-05-25 WO PCT/CN2020/092016 patent/WO2020253469A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016019790A1 (zh) * | 2014-08-04 | 2016-02-11 | 优视科技有限公司 | 一种安装包的校验方法、客户端、服务器及系统 |
CN105050081A (zh) * | 2015-08-19 | 2015-11-11 | 腾讯科技(深圳)有限公司 | 网络接入设备接入无线网络接入点的方法、装置和系统 |
CN108710500A (zh) * | 2018-05-23 | 2018-10-26 | 北京五八信息技术有限公司 | 资源发布方法、更新方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020253469A1 (zh) | 2020-12-24 |
CN110278115A (zh) | 2019-09-24 |
US20220019425A1 (en) | 2022-01-20 |
US11797296B2 (en) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110278115B (zh) | 热更新方法及装置 | |
TWI557589B (zh) | 用於產品驗證和啟動的安全軟體產品識別器 | |
EP1891766B1 (en) | System and method for remote device registration | |
CN108363580A (zh) | 应用程序安装方法、装置、计算机设备和存储介质 | |
US8959659B2 (en) | Software authorization system and method | |
US20180204004A1 (en) | Authentication method and apparatus for reinforced software | |
CN111191195A (zh) | 一种用于保护apk的方法和装置 | |
CN111917540A (zh) | 一种数据加解密方法、装置、移动终端和存储介质 | |
CN111193740A (zh) | 加密方法、装置、解密方法、计算机设备和存储介质 | |
US7552092B2 (en) | Program distribution method and system | |
JPH1131105A (ja) | データカプセル生成装置および方法 | |
CN112907375A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN107257282B (zh) | 一种基于rc4算法的代码全包加密方法 | |
CN114499875A (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN108376212B (zh) | 执行代码安全保护方法、装置及电子装置 | |
CN114896621B (zh) | 应用服务的获取方法、加密方法、装置、计算机设备 | |
CN116484379A (zh) | 系统启动方法、包含可信计算基软件的系统、设备及介质 | |
CN112817615A (zh) | 文件处理方法、设备、系统和存储介质 | |
CN108259490B (zh) | 一种客户端校验方法及装置 | |
Cabiddu et al. | The trusted platform agent | |
CN111859408A (zh) | 文件加密、解密方法及装置、电子设备、可读存储介质 | |
US20220350590A1 (en) | Secure device update by passing encryption and data together | |
CN113407213B (zh) | 资源包更新方法、装置、设备及存储介质 | |
CN114760111B (zh) | 基于区块链的文件保密方法及文件保密装置 | |
EP3930254B1 (en) | Method for setting permissions for cryptographic keys, computer program and cryptographic processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |