CN113360134B - 安全验证程序的生成方法、装置、设备和存储介质 - Google Patents

安全验证程序的生成方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN113360134B
CN113360134B CN202010151903.5A CN202010151903A CN113360134B CN 113360134 B CN113360134 B CN 113360134B CN 202010151903 A CN202010151903 A CN 202010151903A CN 113360134 B CN113360134 B CN 113360134B
Authority
CN
China
Prior art keywords
client
key
type
program
target
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
Application number
CN202010151903.5A
Other languages
English (en)
Other versions
CN113360134A (zh
Inventor
周志刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN202010151903.5A priority Critical patent/CN113360134B/zh
Publication of CN113360134A publication Critical patent/CN113360134A/zh
Application granted granted Critical
Publication of CN113360134B publication Critical patent/CN113360134B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4435Detection or removal of dead or redundant code

Abstract

本发明实施例公开了一种安全验证程序的生成方法、装置、设备和存储介质。该方法包括:获取编译安全验证程序的程序编译参数,所述程序编译参数包含安装安全验证程序的载体的目标载体类型和目标载体版本号;依据所述程序编译参数,从同一份安全验证代码文件中确定与所述程序编译参数对应的待编译代码段,其中,所述同一份安全验证代码文件中适用于不同载体类型和每个所述载体类型的不同载体版本号的安全验证代码的主体结构可复用;编译所述待编译代码段,生成与所述程序编译参数对应的可执行的安全验证程序。通过上述技术方案,实现了更加高效地生成不同客户端或服务器的安全验证程序,且提高了安全验证程序的可维护性和扩展性。

Description

安全验证程序的生成方法、装置、设备和存储介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种安全验证程序的生成方法、装置、设备和存储介质。
背景技术
随着技术的发展,在用户客户端和服务端之间存在着大量的安全验证需求,例如支付过程和应用软件登录过程中的身份验证等。为此,需要在客户端和服务端上均安装相应的安全验证程序。
随着移动端发展,客户端类型越来越丰富,既有基于JS开发的WEB客户端,也有基于C++编写的Windows客户端,也有基于JAVA开发的android客户端,也有基于object-c开发的IOS客户端等。故需要针对不同类型的客户端而开发不同的安全验证程序。并且,服务端需要与不同类型的客户端进行安全验证交互,故服务端中的安全验证程序需要能够对接不同类型的客户端的安全验证程序。基于上述现状,目前在进行安全验证程序开发时,需要使用不同的开发语言来开发多个客户端及多个客户端版本的安全验证程序,且需要在服务端中保留所有类型的客户端及同一类型的客户端的所有版本的相应安全验证程序。
但是,不同类型的客户端以及同一类型客户端的不同版本对应的安全验证程序的大致逻辑是一致的,只有小部分变化,这样就会导致多次重复开发,降低程序开发效率;且在服务端中保留了大量重复的代码信息,造成服务端的代码冗余。另外,这样各自独立开发程序的方式,也会导致程序不易维护,一旦需要修改安全验证程序的某些内容,其代码修改工作量无疑是巨大的。
发明内容
本发明实施例提供一种安全验证程序的生成方法、装置、设备和存储介质,以实现更加高效地生成不同客户端或服务器的安全验证程序,且提高安全验证程序的可维护性和扩展性。
第一方面,本发明实施例提供了一种安全验证程序的生成方法,包括:
获取编译安全验证程序的程序编译参数,所述程序编译参数包含安装安全验证程序的载体的目标载体类型和目标载体版本号;
依据所述程序编译参数,从同一份安全验证代码文件中确定与所述程序编译参数对应的待编译代码段,其中,所述同一份安全验证代码文件中适用于不同载体类型和每个所述载体类型的不同载体版本号的安全验证代码的主体结构可复用;
编译所述待编译代码段,生成与所述程序编译参数对应的可执行的安全验证程序;
其中,所述待编译代码段中包含与所述程序编译参数对应的各密钥,各所述密钥通过如下方式预先生成:
依据所述目标载体类型对应的目标客户端类型和所述目标载体版本号对应的目标客户端版本号的前一客户端版本号对应的密钥区块中的各密钥和预设盐值,生成所述目标客户端类型的前一客户端版本号的密钥区块哈希值;
依据所述目标客户端类型、初始密钥数据、所述目标客户端版本号、各密钥序号以及所述密钥区块哈希值,确定各目标密钥数据;
依据每个所述目标密钥数据,生成所述目标客户端类型和所述目标客户端版本号对应的各所述密钥。
第二方面,本发明实施例还提供了一种安全验证程序的生成装置,该装置包括:
程序编译参数获取模块,用于获取编译安全验证程序的程序编译参数,所述程序编译参数包含目标载体类型和目标载体版本号;
待编译代码段确定模块,用于依据所述程序编译参数,从同一份安全验证代码文件中确定与所述程序编译参数对应的待编译代码段,其中,所述同一份安全验证代码文件中适用于不同载体类型和每个所述载体类型的不同载体版本号的安全验证代码的主体结构可复用;
程序生成模块,用于编译所述待编译代码段,生成与所述程序编译参数对应的可执行的安全验证程序;
其中,所述待编译代码段中包含与所述程序编译参数对应的各密钥;
所述装置还包括密钥生成模块,用于通过如下方式预先生成各所述密钥:
依据所述目标载体类型对应的目标客户端类型和所述目标载体版本号对应的目标客户端版本号的前一客户端版本号对应的密钥区块中的各密钥和预设盐值,生成所述目标客户端类型的前一客户端版本号的密钥区块哈希值;
依据所述目标客户端类型、初始密钥数据、所述目标客户端版本号、各密钥序号以及所述密钥区块哈希值,确定各目标密钥数据;
依据每个所述目标密钥数据,生成所述目标客户端类型和所述目标客户端版本号对应的各所述密钥。
第三方面,本发明实施例还提供了一种电子设备,该电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的安全验证程序的生成方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的安全验证程序的生成方法。
本发明实施例通过将不同的客户端类型、客户端版本和服务端等不同目标载体类型和目标载体版本号的安全验证程序集中在同一份安全验证代码文件中,该同一份安全验证代码文件中只保留一套安全验证的核心代码,且同时保留不同客户端类型和不同客户端版本号对应的差异代码,为后续不同目标载体类型和目标载体版本号的安全验证程序的生成提供代码基础,且能够提高代码复用性和对不同平台的兼容性,增强代码可维护性和可读性。通过获取编译安全验证程序的程序编译参数,程序编译参数包含安装安全验证程序的载体的目标载体类型和目标载体版本号;依据程序编译参数,从同一份安全验证代码文件中确定与程序编译参数对应的待编译代码段;编译待编译代码段,生成与程序编译参数对应的可执行的安全验证程序。实现了根据编译需求(即编译参数)从同一份安全验证代码文件中选择合适的代码段进行编译,以生成可执行的安全验证程序,提高了适用于不同载体的安全验证程序的生成效率,避免了安全验证程序的重复开发及代码冗余,提高了程序开发效率,增强了程序的可维护性。
附图说明
图1是本发明实施例一中的一种安全验证程序的生成方法的流程图;
图2是本发明实施例二中的一种安全验证程序的生成装置的结构示意图;
图3是本发明实施例三中的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
本实施例提供的安全验证程序的生成方法可适用于服务端和不同客户端的交互式安全验证的安全验证程序的生成。该方法可以由安全验证程序的生成装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在具有程序编译功能的电子设备中,例如笔记本电脑、台式电脑或服务器等。参见图1,本实施例的方法包括:
S110、获取编译安全验证程序的程序编译参数,程序编译参数包含安装安全验证程序的载体的目标载体类型和目标载体版本号。
其中,程序编译参数是指引导程序编译过程的参数,其用于从所有代码中筛选需要被编译的各代码段。目标载体类型用于表征当前需要安装安全验证程序的载体的类别,其可以是服务端和客户端之类的一级类别,也可以是搭载了不同运行系统的客户端的二级类别。由于不同载体类型的安全验证程序会有较少部分的差异,如验证密钥不同,故需要利用载体类型来筛选相应的代码段。示例性地,目标载体类型包括服务端类型、Windows客户端类型、Android客户端类型、IOS客户端类型或web客户端类型。本实施例中的安全验证程序需要安装在服务端和搭载不同运行系统的客户端,故目标载体类型应当覆盖服务端和所有的客户端类型。应当理解的是,随着技术的发展,如果有新的运行系统的客户端,即出现了新的客户端类型,那么本实施例中的目标载体类型应当包含该新出现的客户端类型。这样设置的好处在于,能够提高本发明实施例方法对不同客户端平台的兼容性。目标载体版本号是指目标载体类型的客户端设备所搭载的运行系统的版本号。客户端设备搭载的运行系统更新,那么基于该运行系统的一些应用程序也是需要相应升级的。在本实施例中,载体版本号不同,其对应的安全验证程序中的密钥会不同,故编译过程中还需要目标载体版本号来更加精确地筛选代码段,进一步减少安全验证程序中的代码冗余。
具体地,本操作是在利用编译器进行安全验证程序代码的编译之前,来确定程序编译参数。具体实施时,可以提供人机交互接口,以供用户输入程序编译参数,如用户可根据交互输入提示来输入目标载体类型和目标载体版本号。
S120、依据程序编译参数,从同一份安全验证代码文件中确定与程序编译参数对应的待编译代码段,其中,同一份安全验证代码文件中适用于不同载体类型和每个载体类型的不同载体版本号的安全验证代码的主体结构可复用。
具体地,本发明实施例中设计了一套完整的安全验证程序代码,其中不仅包含了一份实现安全验证功能的核心代码(即安全验证代码的主体结构),也包含了不同载体类型和不同载体版本号对应的安全验证程序代码中有差异的部分的差异代码,该核心代码和差异代码均存储于同一份安全验证代码文件中。当需要生成目标载体类型和目标载体版本号对应的安全验证程序时,便会从该同一份安全验证代码文件中筛选出可复用的核心代码和相应的差异代码,并进行代码编译。
具体实施时,根据程序编译参数中的目标载体类型和目标载体版本号,对同一份安全验证代码文件中的各代码段进行筛选,确定出与目标载体类型和目标载体版本号均匹配的代码段,作为待编译代码段。
示例性地,同一份安全验证代码文件利用C++程序开发语言中的模板temp late开发完成。具体地,由于不同客户端类型对应的开发语言不同,例如Wind ows客户端类型的开发语言为C++、Android客户端类型的开发语言为JAVA、I OS客户端类型的开发语言为object-c等,故同一份安全验证代码文件需要兼容不同的开发语言,故本实施例中利用C++程序开发语言中的模板template来完成相应的代码开发,从而实现通用编程,提高代码的可扩展性和可重用性。
示例性地,待编译代码段中包含与程序编译参数对应的、用于安全验证的各密钥,且各密钥通过如下方式预先生成:
A、依据目标载体类型对应的目标客户端类型和目标载体版本号对应的目标客户端版本号的前一客户端版本号对应的密钥区块中的各密钥和预设盐值,生成目标客户端类型的前一客户端版本号的密钥区块哈希值。
其中,目标客户端类型是指当前需要生成密钥的客户端类型。当目标载体类型为某一客户端类型时,该目标载体类型便可作为目标客户端类型;当目标载体类型为服务端类型时,因服务端需要对不同客户端进行安全验证,故服务端需要对接所有的客户端及其所有的客户端版本号,所以,服务端对接的任一客户端类型均可作为目标客户端类型。目标客户端版本号是指当前需要生成密钥的客户端版本号。目标客户端版本号的确定方式同目标客户端类型的确定方式相同。盐值是指在密码hash过程中添加的额外的随机值。预设盐值是指按照预设随机数生成算法而生成的盐值。密钥区块是指区块链中存储某一客户端类型及其某一客户端版本号的各密钥的区块,其内还存储预设盐值。密钥区块哈希值是指某一密钥区块的哈希值,其由该密钥区块中存储的数据计算而获得,但是本实施例中的密钥区块中不存储该密钥区块哈希值,防止其被直接获取到,从而增加密钥复杂度。
具体地,为了提高每个密钥的可追溯性、复杂度和可维护性,且提高每个客户端的密钥的内在规律性,本发明实施例中并没有选择随机生成密钥的方式,而是建立了密钥与客户端类型和客户端版本号之间的关联性。同时,为了进一步提高密钥的复杂度,本实施例中构建了存储密钥的区块链,每个区块中存储某一客户端类型及其某一客户端版本号的各密钥和预设盐值,并且后一区块中各密钥的生成依赖于前一区块中的区块数据,所有区块的密钥环环相扣,因此形成区块密钥链表,使得黑客或者破解者必须具备所有的历史版本的密钥才能可能破解出最新版本的密钥。
具体实施时,首先需要获取用于生成密钥的密钥数据,其中的一项数据便是目标客户端类型的前一客户端版本号的密钥区块哈希值,其依赖于前一客户端版本号对应的密钥区块中的区块数据,即各密钥和预设盐值。预设盐值使用一个1024位的随机数据,进一步提高密钥复杂度,例如前一客户端版本号的预设盐值可以为Seed_block_(i-1)_salt=rand(1024)。前一客户端版本号对应的密钥区块中的各密钥表示为Seed_block_(i-1)=client_versioni-1[rok0,rok1,....,ro k127],其中,本发明实施例为每个客户端类型和客户端版本号的组合都设计了设定数量(如128个)的密钥,这些密钥形成一个区块密钥表格,rok0表示第1个密钥,rok1表示第2个密钥,rok127表示第128个密钥。之后,基于预设哈希值生成算法,利用前一客户端版本号对应的区块密钥表格Seed_block_(i-1)和预设盐值Seed_block_(i-1)_salt,按照Seed_block_(i-1)_hash=SHA_256(See d_block_(i-1)+Seed_block_(i-1)_salt)生成目标客户端类型的前一客户端版本号的密钥区块哈希值Seed_block_(i-1)_hash。
需要说明的是,如果目标客户端版本号为第一版本号,那么其没有前一客户端版本号的密钥区块,相应地也不需要计算前一客户端版本号的密钥区块哈希值,该项直接默认为0。另外,如果目标载体类型是服务端类型,那么针对服务端对应的每个客户端类型和每个客户端版本号的组合,均循环步骤A~C的过程,以便生成每个组合的密钥。
B、依据目标客户端类型、初始密钥数据、目标客户端版本号、各密钥序号以及密钥区块哈希值,确定各目标密钥数据。
其中,初始密钥数据是指预先设定的固定数据,例如可以是32位固定字符串“67f7e00d65d0fb88fd6fa4689329ed3c”,其用于生成目标密钥数据。密钥序号是指某一密钥在设定数量的密钥中的排列编号,因为设定数量为128,故密钥序号是从0到127。目标密钥数据是指目标客户端类型的目标客户端版本号的、用于生成密钥的种子数据,其是密钥生成算法的处理对象。
具体地,为了建立密钥与客户端类型和客户端版本号之间的关联性,本实施例中在初始密钥数据key的基础上,叠加了目标客户端类型eType和目标客户端版本号versioni。为了保持128个密钥之间的关联性,在上述密钥数据叠加的基础上,再次叠加了密钥序号。而为了保持不同版本号的密钥之间的关联性,在上述密钥数据叠加的基础上,再次叠加了前一客户端版本号的密钥区块哈希值Seed_block_(i-1)_hash。那么,目标密钥数据Seed_i可以表示为:Seed_i=eType+key+versioni+no+Seed_block_(i-1)_hash,其中,目标客户端类型有2个字节的长度;目标客户端版本号为一个4字节的字段,第一个版本使用0000表示,下一个版本则递增用0001表示,依次类推。按照该Seed_i的生成方式,不断变化密钥序号no,便可生成128个目标密钥数据。
C、依据每个目标密钥数据,生成目标客户端类型和目标客户端版本号对应的各密钥。
具体地,针对每个目标密钥数据,利用预设密钥生成算法(如md5)进行加密运算,便可生成每个目标密钥数据对应的密钥。
上述密钥生成的代码可以示例如下:
Figure BDA0002402748950000101
S130、编译待编译代码段,生成与程序编译参数对应的可执行的安全验证程序。
本实施例的技术方案,通过将不同的客户端类型、客户端版本和服务端等不同载体类型和载体版本号的安全验证程序集中在同一份安全验证代码文件中,该同一份安全验证代码文件中只保留一套安全验证的核心代码,且同时保留不同客户端类型和不同客户端版本号对应的差异代码,为后续不同载体类型和载体版本号的安全验证程序的生成提供代码基础,且能够提高代码复用性和对不同平台的兼容性,增强代码可维护性和可读性。通过获取编译安全验证程序的程序编译参数;依据程序编译参数,从同一份安全验证代码文件中确定与程序编译参数对应的待编译代码段;编译待编译代码段,生成与程序编译参数对应的可执行的安全验证程序。实现了根据编译需求(即编译参数)从同一份安全验证代码文件中选择合适的代码段进行编译,以生成可执行的安全验证程序,提高了适用于不同载体的安全验证程序的生成效率,避免了安全验证程序的重复开发及代码冗余,提高了程序开发效率,增强了程序的可维护性。
在上述技术方案的基础上,待编译代码段包括安全验证代码段、密钥存储代码段和密钥获取代码段,且各客户端类型和每个客户端类型的各客户端版本号的密钥存储代码段复用同一个密钥存储结构,服务端类型的密钥存储代码段复用各客户端类型的密钥存储代码段,其中,密钥存储代码段用于存储预先生成的各密钥,密钥获取代码段用于依据目标载体类型和目标载体版本号,从密钥存储代码段中的各密钥中获取安全验证所需的验证密钥,其中,各密钥基于预设密钥生成算法预先生成。
具体地,由于确定出的待编译代码段用于生成一个完整的安全验证程序,故其应当包含安全验证过程中各功能对应的代码。安全验证过程大致为:客户端利用其内部的密钥对待验证的原始信息进行加密,生成密文;之后,客户端将原始信息、加密方式(含验证算法和密钥信息)、密文及客户端信息(含客户端类型和客户端版本号)发送至服务端,以便服务端获取相应的密钥,并对原始信息进行同样的加密处理,生成验证密文,并比较验证密文与客户端发送的密文,以此完成安全验证。基于此过程,一个安全验证程序中便至少应当包含实现加密功能和验证功能的安全验证代码段、存储各密钥的密钥存储代码段、以及从各密钥中获取验证密钥的密钥获取代码段。验证算法可以是加密算法、哈希算法或其他验证算法等。
其中的密钥存储代码段中的各密钥是利用S120中的方式预先生成的,其也是安全验证程序中变动较大的一部分。为了提高代码复用性,本实施例中将密钥存储代码段(见后续说明)设计为密钥存储结构的复用。具体而言,对于客户端类型,每个客户端类型和相应客户端类型下的各客户端版本号的密钥存储代码段复用同一个密钥存储结构。对于服务端类型,因为服务端需要对接所有客户端类型和所有客户端版本的安全验证,所以服务端中需要保留所有客户端类型和所有客户端版本号的密钥数据,本实施例中服务端的密钥存储代码段会复用各个客户端类型的密钥存储代码段。
上述安全验证代码段的代码实现可示例如下:
Figure BDA0002402748950000121
Figure BDA0002402748950000131
需要说明的是,本实施例中统一了所有客户端类型的安全验证接口及内部功能实现代码,该部分为各客户端的安全验证程序中的共性代码(也称核心代码)。
Figure BDA0002402748950000132
Figure BDA0002402748950000141
需要说明的是,上述服务端的安全验证结构和内部功能实现代码为服务端的安全验证程序中的核心代码。
上述密钥获取代码段的代码实现可示例如下:
Figure BDA0002402748950000142
Figure BDA0002402748950000151
鉴于服务端密钥存储结构中使用boost::hana来将同一个客户端类型的不同客户端版本号的密钥存储结构串联起来定义成一个变量types(见后续说明),故在服务端的密钥获取代码段中可以通过编写循环boost::hana::for_each(cfgs<e Type::WEB>::types,[&](auto const&element)的方式来获取对应的密钥,并且这个功能函数随着版本不断迭代和发布,不需要修改代码既可以完成对应的功能。
在上述技术方案的基础上,当目标载体类型为Windows客户端类型、Andr oid客户端类型、IOS客户端类型和web客户端类型中的任一客户端类型时,密钥存储代码段中将客户端类型和客户端类型的客户端版本号对应的各密钥,存储至相应客户端类型和相应客户端版本号对应的客户端密钥存储特化结构中,以供依据程序编译参数中的目标载体类型和目标载体版本号,从同一份安全验证代码文件中确定密钥存储代码段作为待编译代码段,其中,客户端密钥存储特化结构为对模板参数为客户端类型和客户端版本号的密钥存储结构进行特化而获得;当目标载体类型为服务端类型时,密钥存储代码段中将每个客户端类型和相应客户端类型的各客户端版本号对应的各密钥,存储至相应客户端类型对应的服务端密钥存储特化结构中,以使服务端密钥存储结构中使用boost::han a将同一个客户端类型的不同客户端版本号的密钥存储结构串联存储至同一个变量types中,其中,服务端密钥存储特化结构为对模板参数为客户端类型的密钥存储结构进行特化而获得。
具体地,根据上述说明,本实施例中的安全验证代码段和密钥获取代码段属于核心代码,其会被直接选定为待编译代码,而不会随着程序编译参数的不同而不同。但是,密钥存储代码段中存储的是所有的密钥,客户端类型不同、客户端版本号不同,密钥就会不同,故密钥存储代码段是需要随着程序编译参数来进行筛选的,而筛选的过程与具体的代码设计相关。
对于客户端类型,每个客户端类型和相应客户端类型下的各客户端版本号的密钥存储代码段复用同一个密钥存储结构,本实施例中是以客户端类型和客户端版本号为参数,进行密钥存储结构的设计,其代码实现具体示例如下:
Figure BDA0002402748950000161
Figure BDA0002402748950000171
template<>struct config<0,eType::ios>;//特化版本号为0,类型为ios客户端的密钥存储结构,内部代码实现同上Android客户端类型
template<>struct config<0,eType::web>;//特化版本号为0,类型为web客户端的密钥存储结构,内部代码实现同上
根据上述示例代码段,当根据程序编译参数进行代码段筛选时,可以直接根据目标载体类型和目标载体版本号对客户端的密钥存储结构进行筛选。如此,当目标载体类型为客户端类型时,需要将客户端对应的安全验证代码段、根据目标载体类型和目标载体版本号筛选的客户端的密钥存储代码段、以及客户端对应的密钥获取代码段选定为待编辑代码段。
对于服务端类型,因为服务端需要对接所有客户端类型和所有客户端版本的安全验证,所以服务端中需要保留所有客户端类型和所有客户端版本号的密钥数据,为了提高代码复用性,本实施例中服务端的密钥存储代码段会复用各个客户端类型的密钥存储代码段。具体实施时,本实施例中使用了boost::hana来将同一个客户端类型的不同版本号的密钥存储结构串联起来定义成一个变量types,如此可以简化服务端的后续的密钥获取代码设计。服务端的密钥存储结构的代码实现示例如下:
Figure BDA0002402748950000172
Figure BDA0002402748950000181
服务端的密钥存储结构虽然将同一个客户端类型的所有版本号的密钥结构串联起来,但是当目标载体类型为服务端类型时,还需要将服务端和所有客户端对应的所有密钥存储代码选定为待编辑代码段。那么,在目标载体类型为服务端类型时,需要将服务端对应的安全验证代码段、服务端和所有客户端对应的所有密钥存储代码段、以及服务端对应的密钥获取代码段选定为待编辑代码段。
在上述技术方案的基础上,该安全验证程序的生成方法还包括:当增加新的客户端类型时,基于密钥存储代码段中的密钥存储模板,向同一份安全验证代码文件中增加新的客户端类型及新的客户端类型的客户端版本号对应的新的客户端密钥存储特化结构,其中,新的客户端密钥存储特化结构中的各密钥基于预设密钥生成算法预先生成。
具体地,当增加新的客户端类型时,客户端对应的安全验证代码段和密钥获取代码段均无需修改,但是需要向同一份安全验证代码文件中增加新的客户端类型和客户端版本号对应的新的密钥存储代码段(即新的客户端密钥存储特化结构)。具体实施时,根据密钥存储模板template<uint32_t R,eType H,type name=void>struct config,特化版本号为0,类型为新的客户端类型的密钥存储结构template<>struct config<0,eType::new>,其内部代码实现同S120中A ndroid客户端类型。这样设置的好处在于,当新增客户端类型时,只需在同一份安全验证代码文件中增加相应的密钥存储代码段,其代码修改幅度很小,并且非常容易扩展,达到了代码复用最大化,提高了安全验证程序的生成方法的代码可维护性和可扩展性。
在上述技术方案的基础上,该安全验证程序的生成方法还包括:当升级客户端时,基于密钥存储代码段中的密钥存储模板,向同一份安全验证代码文件中增加升级客户端对应的升级客户端类型及升级客户端版本号对应的升级客户端密钥存储特化结构,其中,升级客户端密钥存储特化结构中的各密钥基于预设密钥生成算法预先生成。
具体地,当升级客户端时,其客户端类型不变,但是客户端版本号加1,这时,客户端对应的安全验证代码段和密钥获取代码段均无需修改,但是需要向同一份安全验证代码文件中增加升级客户端版本号对应的升级密钥存储代码段(即升级客户端密钥存储特化结构)。具体实施时,根据密钥存储模板templ ate<uint32_t R,eType H,typename=void>struct config,特化版本号为升级客户端版本号1,类型为升级客户端类型的密钥存储结构,如template<>struct config<1,eType::Windows>、template<>struct config<1,eType::Android>、te mplate<>struct config<1,eType::ios>、或template<>structconfig<1,eType::w eb>,其内部代码实现同S120中Android客户端类型。对于服务端的密钥存储代码段的修改,则是在types变量的最后位置增加升级客户端版本号(如2)对应的密钥存储结构,例如static constexpr auto types=boost::hana::tuple_t<conf ig<0,eType::WEB>,config<1,eType::WEB>,config<2,eType::WEB>>;}。这样设置的好处在于,当升级客户端时,只需在同一份安全验证代码文件中增加相应的密钥存储代码段,其代码修改幅度很小,并且非常容易扩展,达到了代码复用最大化,提高了安全验证程序的生成方法的代码可维护性和可扩展性。
需要说明的是,无论是新增客户端类型,还是升级客户端,都需要为其重新生成新的一批密钥,该新的一批密钥便会存储至相应的密钥存储结构中。
实施例二
本实施例提供一种安全验证程序的生成装置,参见图2,该装置具体包括:
程序编译参数获取模块210,用于获取编译安全验证程序的程序编译参数,程序编译参数包含目标载体类型和目标载体版本号;
待编译代码段确定模块220,用于依据程序编译参数,从同一份安全验证代码文件中确定与程序编译参数对应的待编译代码段,其中,同一份安全验证代码文件中适用于不同载体类型和每个载体类型的不同载体版本号的安全验证代码的主体结构可复用;
程序生成模块230,用于编译待编译代码段,生成与程序编译参数对应的可执行的安全验证程序;
其中,待编译代码段中包含与程序编译参数对应的各密钥;
该装置还包括密钥生成模块240,用于通过如下方式预先生成各密钥:
依据目标载体类型对应的目标客户端类型和目标载体版本号对应的目标客户端版本号的前一客户端版本号对应的密钥区块中的各密钥和预设盐值,生成目标客户端类型的前一客户端版本号的密钥区块哈希值;
依据目标客户端类型、初始密钥数据、目标客户端版本号、各密钥序号以及密钥区块哈希值,确定各目标密钥数据;
依据每个目标密钥数据,生成目标客户端类型和目标客户端版本号对应的各密钥。
可选地,目标载体类型包括服务端类型、Windows客户端类型、Android客户端类型、IOS客户端类型或web客户端类型。
可选地,同一份安全验证代码文件利用C++程序开发语言中的模板templat e开发完成。
可选地,待编译代码段包括安全验证代码段、密钥存储代码段和密钥获取代码段,且各客户端类型和每个客户端类型的各客户端版本号的密钥存储代码段复用同一个密钥存储结构,服务端类型的密钥存储代码段复用各客户端类型的密钥存储代码段;
其中,密钥存储代码段用于存储预先生成的各密钥,密钥获取代码段用于依据目标载体类型和目标载体版本号从密钥存储代码段中的各密钥中获取安全验证所需的验证密钥,各密钥基于预设密钥生成算法预先生成。
可选地,当目标载体类型为Windows客户端类型、Android客户端类型、I OS客户端类型和web客户端类型中的任一客户端类型时,密钥存储代码段中将客户端类型和客户端类型的客户端版本号对应的各密钥,存储至相应客户端类型和相应客户端版本号对应的客户端密钥存储特化结构中,以供依据程序编译参数中的目标载体类型和目标载体版本号,从同一份安全验证代码文件中确定密钥存储代码段作为待编译代码段,其中,客户端密钥存储特化结构为对模板参数为客户端类型和客户端版本号的密钥存储结构进行特化而获得;
当目标载体类型为服务端类型时,密钥存储代码段中将每个客户端类型和相应客户端类型的各客户端版本号对应的各密钥,存储至相应客户端类型对应的服务端密钥存储特化结构中,以使服务端密钥存储结构中使用boost::hana将同一个客户端类型的不同客户端版本号的密钥存储结构串联存储至同一个变量types中,其中,服务端密钥存储特化结构为对模板参数为客户端类型的密钥存储结构进行特化而获得。
可选地,在上述装置的基础上,该装置还包括代码扩展模块,用于:
当增加新的客户端类型时,基于密钥存储代码段中的密钥存储模板,向同一份安全验证代码文件中增加新的客户端类型及新的客户端类型的客户端版本号对应的新的客户端密钥存储特化结构,其中,新的客户端密钥存储特化结构中的各密钥基于预设密钥生成算法预先生成。
可选地,代码扩展模块还用于:
当升级客户端时,基于密钥存储代码段中的密钥存储模板,向同一份安全验证代码文件中增加升级客户端对应的升级客户端类型及升级客户端版本号对应的升级客户端密钥存储特化结构,其中,升级客户端密钥存储特化结构中的各密钥基于预设密钥生成算法预先生成。
本发明实施例二的一种安全验证程序的生成装置,实现了根据编译需求(即编译参数)从同一份安全验证代码文件中选择合适的代码段进行编译,以生成可执行的安全验证程序,提高了适用于不同载体的安全验证程序的生成效率,避免了安全验证程序的重复开发及代码冗余,提高了程序开发效率,增强了程序的可维护性。
本发明实施例所提供的安全验证程序的生成装置可执行本发明任意实施例所提供的安全验证程序的生成方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,上述安全验证程序的生成装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例三
参见图3,本实施例提供了一种电子设备300,其包括:一个或多个处理器320;存储装置310,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器320执行,使得一个或多个处理器320实现本发明实施例所提供的安全验证程序的生成方法,包括:
获取编译安全验证程序的程序编译参数,程序编译参数包含安装安全验证程序的载体的目标载体类型和目标载体版本号;
依据程序编译参数,从同一份安全验证代码文件中确定与程序编译参数对应的待编译代码段,其中,同一份安全验证代码文件中适用于不同载体类型和每个载体类型的不同载体版本号的安全验证代码的主体结构可复用;
编译待编译代码段,生成与程序编译参数对应的可执行的安全验证程序;
其中,待编译代码段中包含与程序编译参数对应的各密钥,各密钥通过如下方式预先生成:
依据目标载体类型对应的目标客户端类型和目标载体版本号对应的目标客户端版本号的前一客户端版本号对应的密钥区块中的各密钥和预设盐值,生成目标客户端类型的前一客户端版本号的密钥区块哈希值;
依据目标客户端类型、初始密钥数据、目标客户端版本号、各密钥序号以及密钥区块哈希值,确定各目标密钥数据;
依据每个目标密钥数据,生成目标客户端类型和目标客户端版本号对应的各密钥。
当然,本领域技术人员可以理解,处理器320还可以实现本发明任意实施例所提供的安全验证程序的生成方法的技术方案。
图3显示的电子设备300仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图3所示,该电子设备300包括处理器320、存储装置310、输入装置330和输出装置340;电子设备中处理器320的数量可以是一个或多个,图3中以一个处理器320为例;电子设备中的处理器320、存储装置310、输入装置330和输出装置340可以通过总线或其他方式连接,图3中以通过总线350连接为例。
存储装置310作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的安全验证程序的生成方法对应的程序指令/模块(例如,安全验证程序的生成装置中的程序编译参数获取模块、待编译代码段确定模块、程序生成模块和密钥生成模块)。
存储装置310可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置310可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置310可进一步包括相对于处理器320远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置330可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置340可包括显示屏等显示设备。
实施例四
本实施例提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种安全验证程序的生成方法,该方法包括:
获取编译安全验证程序的程序编译参数,程序编译参数包含安装安全验证程序的载体的目标载体类型和目标载体版本号;
依据程序编译参数,从同一份安全验证代码文件中确定与程序编译参数对应的待编译代码段,其中,同一份安全验证代码文件中适用于不同载体类型和每个载体类型的不同载体版本号的安全验证代码的主体结构可复用;
编译待编译代码段,生成与程序编译参数对应的可执行的安全验证程序;
其中,待编译代码段中包含与程序编译参数对应的各密钥,各密钥通过如下方式预先生成:
依据目标载体类型对应的目标客户端类型和目标载体版本号对应的目标客户端版本号的前一客户端版本号对应的密钥区块中的各密钥和预设盐值,生成目标客户端类型的前一客户端版本号的密钥区块哈希值;
依据目标客户端类型、初始密钥数据、目标客户端版本号、各密钥序号以及密钥区块哈希值,确定各目标密钥数据;
依据每个目标密钥数据,生成目标客户端类型和目标客户端版本号对应的各密钥。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的方法操作,还可以执行本发明任意实施例所提供的安全验证程序的生成方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(R ead-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所提供的安全验证程序的生成方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种安全验证程序的生成方法,其特征在于,包括:
获取编译安全验证程序的程序编译参数,所述程序编译参数包含安装安全验证程序的载体的目标载体类型和目标载体版本号;
依据所述程序编译参数,从同一份安全验证代码文件中确定与所述程序编译参数对应的待编译代码段,其中,所述同一份安全验证代码文件中适用于不同载体类型和每个所述载体类型的不同载体版本号的安全验证代码的主体结构可复用;
编译所述待编译代码段,生成与所述程序编译参数对应的可执行的安全验证程序;
其中,所述待编译代码段中包含与所述程序编译参数对应的各密钥,各所述密钥通过如下方式预先生成:
依据所述目标载体类型对应的目标客户端类型和所述目标载体版本号对应的目标客户端版本号的前一客户端版本号对应的密钥区块中的各密钥和预设盐值,生成所述目标客户端类型的前一客户端版本号的密钥区块哈希值;
依据所述目标客户端类型、初始密钥数据、所述目标客户端版本号、各密钥序号以及所述密钥区块哈希值,确定各目标密钥数据;
依据每个所述目标密钥数据,生成所述目标客户端类型和所述目标客户端版本号对应的各所述密钥。
2.根据权利要求1所述的方法,其特征在于,所述目标载体类型包括服务端类型、Windows客户端类型、Android客户端类型、IOS客户端类型或web客户端类型。
3.根据权利要求1所述的方法,其特征在于,所述同一份安全验证代码文件利用C++程序开发语言中的模板template开发完成。
4.根据权利要求3所述的方法,其特征在于,所述待编译代码段包括安全验证代码段、密钥存储代码段和密钥获取代码段,且各客户端类型和每个所述客户端类型的各客户端版本号的密钥存储代码段复用同一个密钥存储结构,服务端类型的密钥存储代码段复用各客户端类型的密钥存储代码段;
其中,所述密钥存储代码段用于存储预先生成的各密钥,所述密钥获取代码段用于依据所述目标载体类型和所述目标载体版本号从所述密钥存储代码段中的各密钥中获取安全验证所需的验证密钥,各所述密钥基于预设密钥生成算法预先生成。
5.根据权利要求4所述的方法,其特征在于,当所述目标载体类型为Windows客户端类型、Android客户端类型、IOS客户端类型和web客户端类型中的任一客户端类型时,所述密钥存储代码段中将所述客户端类型和所述客户端类型的客户端版本号对应的各密钥,存储至相应客户端类型和相应客户端版本号对应的客户端密钥存储特化结构中,以供依据所述程序编译参数中的所述目标载体类型和所述目标载体版本号,从同一份安全验证代码文件中确定密钥存储代码段作为所述待编译代码段,其中,所述客户端密钥存储特化结构为对模板参数为客户端类型和客户端版本号的密钥存储结构进行特化而获得;
当所述目标载体类型为服务端类型时,所述密钥存储代码段中将每个所述客户端类型和相应客户端类型的各客户端版本号对应的各密钥,存储至相应客户端类型对应的服务端密钥存储特化结构中,以使所述服务端密钥存储结构中使用boost::hana将同一个客户端类型的不同客户端版本号的密钥存储结构串联存储至同一个变量types中,其中,所述服务端密钥存储特化结构为对模板参数为客户端类型的密钥存储结构进行特化而获得。
6.根据权利要求4所述的方法,其特征在于,还包括:
当增加新的客户端类型时,基于所述密钥存储代码段中的密钥存储模板,向所述同一份安全验证代码文件中增加所述新的客户端类型及所述新的客户端类型的客户端版本号对应的新的客户端密钥存储特化结构,其中,所述新的客户端密钥存储特化结构中的各密钥基于所述预设密钥生成算法预先生成。
7.根据权利要求4所述的方法,其特征在于,还包括:
当升级客户端时,基于所述密钥存储代码段中的密钥存储模板,向所述同一份安全验证代码文件中增加所述升级客户端对应的升级客户端类型及升级客户端版本号对应的升级客户端密钥存储特化结构,其中,所述升级客户端密钥存储特化结构中的各密钥基于所述预设密钥生成算法预先生成。
8.一种安全验证程序的生成装置,其特征在于,包括:
程序编译参数获取模块,用于获取编译安全验证程序的程序编译参数,所述程序编译参数包含目标载体类型和目标载体版本号;
待编译代码段确定模块,用于依据所述程序编译参数,从同一份安全验证代码文件中确定与所述程序编译参数对应的待编译代码段,其中,所述同一份安全验证代码文件中适用于不同载体类型和每个所述载体类型的不同载体版本号的安全验证代码的主体结构可复用;
程序生成模块,用于编译所述待编译代码段,生成与所述程序编译参数对应的可执行的安全验证程序;
其中,所述待编译代码段中包含与所述程序编译参数对应的各密钥;
所述装置还包括密钥生成模块,用于通过如下方式预先生成各所述密钥:
依据所述目标载体类型对应的目标客户端类型和所述目标载体版本号对应的目标客户端版本号的前一客户端版本号对应的密钥区块中的各密钥和预设盐值,生成所述目标客户端类型的前一客户端版本号的密钥区块哈希值;
依据所述目标客户端类型、初始密钥数据、所述目标客户端版本号、各密钥序号以及所述密钥区块哈希值,确定各目标密钥数据;
依据每个所述目标密钥数据,生成所述目标客户端类型和所述目标客户端版本号对应的各所述密钥。
9.一种电子设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的安全验证程序的生成方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一所述的安全验证程序的生成方法。
CN202010151903.5A 2020-03-06 2020-03-06 安全验证程序的生成方法、装置、设备和存储介质 Active CN113360134B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010151903.5A CN113360134B (zh) 2020-03-06 2020-03-06 安全验证程序的生成方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010151903.5A CN113360134B (zh) 2020-03-06 2020-03-06 安全验证程序的生成方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN113360134A CN113360134A (zh) 2021-09-07
CN113360134B true CN113360134B (zh) 2022-06-17

Family

ID=77524169

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010151903.5A Active CN113360134B (zh) 2020-03-06 2020-03-06 安全验证程序的生成方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN113360134B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864569A (en) * 1987-11-25 1989-09-05 Westinghouse Electric Corp. Software verification and validation configuration management system
EP0752650A2 (en) * 1995-07-07 1997-01-08 Sun Microsystems, Inc. Method and apparatus for generating executable code from object-oriented C++ source code
US5905894A (en) * 1997-10-29 1999-05-18 Microsoft Corporation Meta-programming methods and apparatus
CN105843623A (zh) * 2016-03-29 2016-08-10 乐视控股(北京)有限公司 目标程序的生成方法和装置
CN106126235A (zh) * 2016-06-24 2016-11-16 中国科学院信息工程研究所 一种复用代码库构建方法、复用代码快速溯源方法及系统
CN108256353A (zh) * 2018-01-11 2018-07-06 武汉斗鱼网络科技有限公司 一种数据完整性校验方法、装置及客户端
CN108280329A (zh) * 2018-01-22 2018-07-13 台州风达机器人科技有限公司 一种用于软件运行的验证放行方法
WO2018177260A1 (zh) * 2017-03-28 2018-10-04 腾讯科技(深圳)有限公司 一种应用程序开发方法及其工具、设备、存储介质
EP3432138A1 (en) * 2017-07-20 2019-01-23 Fujitsu Limited A computer-implemented method and system for comparing the results on a plurality of target machines of modification of a region of original code
CN110580147A (zh) * 2018-06-07 2019-12-17 阿里巴巴集团控股有限公司 一种应用程序的开发方法和装置
CN110750258A (zh) * 2019-10-25 2020-02-04 成都天奥信息科技有限公司 一种基于xml的可重用监控软件设计方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795989B2 (en) * 2017-03-05 2020-10-06 Fortinet, Inc. Secure just-in-time (JIT) code generation
US10656936B2 (en) * 2018-08-30 2020-05-19 Dell Products L.P. Systems and methods for software integrity validation using blockchain

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864569A (en) * 1987-11-25 1989-09-05 Westinghouse Electric Corp. Software verification and validation configuration management system
EP0752650A2 (en) * 1995-07-07 1997-01-08 Sun Microsystems, Inc. Method and apparatus for generating executable code from object-oriented C++ source code
US5905894A (en) * 1997-10-29 1999-05-18 Microsoft Corporation Meta-programming methods and apparatus
CN105843623A (zh) * 2016-03-29 2016-08-10 乐视控股(北京)有限公司 目标程序的生成方法和装置
CN106126235A (zh) * 2016-06-24 2016-11-16 中国科学院信息工程研究所 一种复用代码库构建方法、复用代码快速溯源方法及系统
WO2018177260A1 (zh) * 2017-03-28 2018-10-04 腾讯科技(深圳)有限公司 一种应用程序开发方法及其工具、设备、存储介质
EP3432138A1 (en) * 2017-07-20 2019-01-23 Fujitsu Limited A computer-implemented method and system for comparing the results on a plurality of target machines of modification of a region of original code
CN108256353A (zh) * 2018-01-11 2018-07-06 武汉斗鱼网络科技有限公司 一种数据完整性校验方法、装置及客户端
CN108280329A (zh) * 2018-01-22 2018-07-13 台州风达机器人科技有限公司 一种用于软件运行的验证放行方法
CN110580147A (zh) * 2018-06-07 2019-12-17 阿里巴巴集团控股有限公司 一种应用程序的开发方法和装置
CN110750258A (zh) * 2019-10-25 2020-02-04 成都天奥信息科技有限公司 一种基于xml的可重用监控软件设计方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Template_Based Code Generation Framework for Data Driven Software Development;Kshitija Shinde等;《https://ieeexplore.ieee.org/abstract/document/7916958》;20180504;全文第1-6页 *
完整版:资深程序员都了解的代码复用法则;dj0379;《https://blog.csdn.net/dj0379/article/details/51917573》;20160715;全文第1-33页 *

Also Published As

Publication number Publication date
CN113360134A (zh) 2021-09-07

Similar Documents

Publication Publication Date Title
US11169791B2 (en) Processing, modification, distribution of custom software installation packages
CN104572237B (zh) 一种UKey安装包自动快速生成系统及其方法
US9721101B2 (en) System wide root of trust chaining via signed applications
US20080195868A1 (en) Rollback-Resistant Code-Signing
CN111552931A (zh) java代码的加壳方法与系统
EP2696531A1 (en) Initialization of embedded secure elements
Chen et al. Toss: Tailoring online server systems through binary feature customization
CN113391796B (zh) 一种集成开发环境的构建方法、装置、设备及介质
KR20050039533A (ko) 맞춤가능 및 구성가능 재사용가능 애플리케이션 구축,배치, 서비스, 및 관리하기 위한 프레임워크
US11095459B2 (en) Automatic generation of app-specific client certification
WO2023155697A1 (zh) 一种数据处理的方法和装置
CN111144878B (zh) 指令生成方法与指令生成装置
CN112966227A (zh) 代码加密解密方法和装置、存储介质
CN111488169A (zh) 应用程序热更新的方法及装置、存储介质及电子设备
CN108804913A (zh) 应用程序的运行方法和装置
CN113114645B (zh) 提高安全模组存储容量及运行安全性的方法、装置及设备
CN113360134B (zh) 安全验证程序的生成方法、装置、设备和存储介质
US20220284101A1 (en) Management of building of software packages using a trusted execution environment
CN109543366B (zh) 一种源代码加密方法及其装置和系统
CN107133539B (zh) 智能卡个人化方法及相关装置与系统
CN104657631A (zh) 应用的渠道信息的处理方法及装置
CN111158773B (zh) 一种ks引导自动化批量装机的方法及系统
CN113420313A (zh) 程序安全运行、加密方法及其装置、设备、介质
KR101520097B1 (ko) 프로그램 소스 다운로드 시스템 및 방법
CN111460464A (zh) 数据加解密方法、装置、电子设备及计算机存储介质

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
EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20210907

Assignee: Yidu Lehuo Network Technology Co.,Ltd.

Assignor: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

Contract record no.: X2023980041384

Denomination of invention: Generation method, device, device, and storage medium of security verification program

Granted publication date: 20220617

License type: Common License

Record date: 20230908