代码管理方法和装置与流程

文档序号:16060896发布日期:2018-11-24 12:10阅读:234来源:国知局

本发明涉及计算机技术领域,尤其涉及一种代码管理方法和装置。

背景技术

在互联网行业中,代码开发人员将程序代码开发完毕后,需要将程序代码或者编译结果部署到服务器上运行,才能间接的为用户提供服务,这个过程称为代码发布。

目前一般通过版本控制系统(subversion,简称svn)、git,以及集成工具软件jinkens实现对代码的存放和发布。但上述方式中代码存放和发布的过程中,代码容易被篡改、被攻击,安全性得不到保障。



技术实现要素:

本发明提供一种代码管理方法和装置,以提高代码存放和发布过程中的安全性。

第一方面,本发明提供一种代码管理方法,包括:

第一用户设备接收第二用户设备上传至服务器的至少一个代码文件的信息;所述代码文件的信息包括所述代码文件对应的哈希值;

所述第一用户设备根据至少一个所述代码文件的信息生成区块,并将所述区块加入区块链中;所述区块包括区块头和至少一个区块主体,所述区块头包括上一个区块的哈希值;所述区块主体包括至少一个所述代码文件各自对应的哈希值;

所述第一用户设备将所述区块发送给所述服务器,以使所述服务器建立所述区块、所述代码文件对应的哈希值与所述代码文件的存储路径的三者的对应关系。

第二方面,本发明提供一种代码管理方法,包括:

服务器接收第二用户设备上传的至少一个代码文件;

所述服务器接收所述第一用户设备发送的区块;所述区块为根据至少一个所述代码文件的信息生成的;所述代码文件的信息包括:所述代码文件对应的哈希值;所述区块包括区块头和至少一个区块主体,所述区块头包括上一个区块的哈希值;所述区块主体包括至少一个所述代码文件各自对应的哈希值;

所述服务器建立并存储所述区块、所述代码文件对应的哈希值与所述代码文件的存储路径的三者的对应关系。

第三方面,本发明提供一种代码管理装置,包括:

接收模块,用于接收第二用户设备上传至服务器的至少一个代码文件的信息;所述代码文件的信息包括所述代码文件对应的哈希值;

处理模块,用于根据至少一个所述代码文件的信息生成区块,并将所述区块加入区块链中;所述区块包括区块头和至少一个区块主体,所述区块头包括上一个区块的哈希值;所述区块主体包括至少一个所述代码文件各自对应的哈希值;

发送模块,用于将所述区块发送给所述服务器,以使所述服务器建立所述区块、所述代码文件对应的哈希值与所述代码文件的存储路径的三者的对应关系。

第四方面,本发明提供一种代码管理装置,包括:

接收模块,用于接收第二用户设备上传的至少一个代码文件;

所述接收模块,还用于接收所述第一用户设备发送的区块;所述区块为根据至少一个所述代码文件的信息生成的;所述代码文件的信息包括:所述代码文件对应的哈希值;所述区块包括区块头和至少一个区块主体,所述区块头包括上一个区块的哈希值;所述区块主体包括至少一个所述代码文件各自对应的哈希值;

处理模块,用于建立并存储所述区块、所述代码文件对应的哈希值与所述代码文件的存储路径的三者的对应关系。

本发明实施例提供的代码管理方法和装置,第一用户设备接收第二用户设备上传至服务器的至少一个代码文件的信息;所述代码文件的信息包括所述代码文件对应的哈希值;所述第一用户设备根据至少一个所述代码文件的信息生成区块,并将所述区块加入区块链中;所述区块包括区块头和至少一个区块主体,所述区块头包括上一个区块的哈希值;所述区块主体包括至少一个所述代码文件各自对应的哈希值;所述第一用户设备将所述区块发送给所述服务器,以使所述服务器建立所述区块、所述代码文件对应的哈希值与所述代码文件的存储路径的三者的对应关系,通过将代码文件存储至服务器,将代码文件的信息存储至区块链,可以防止代码文件的信息的篡改,使得可以通过区块中的代码文件的信息去验证服务器中的代码文件的真实性,从而保证了代码文件的安全性。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1是本发明提供的代码管理方法一实施例的流程示意图;

图2是本发明提供的代码管理方法一实施例的区块链示意图;

图3是本发明提供的代码管理方法另一实施例的流程示意图;

图4是本发明提供的代码管理方法又一实施例的流程示意图;

图5是本发明提供的代码管理装置一实施例的结构示意图;

图6是本发明提供的代码管理装置另一实施例的结构示意图;

图7是本发明提供的第一用户设备实施例的结构示意图;

图8是本发明提供的服务器实施例的结构示意图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的方法和装置的例子。

本发明的说明书和权利要求书及所述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

首先对本发明所涉及的名词和场景进行介绍:

研发团队每个开发人员都对应区块链中的一个节点,形成p2p对等网络。具体可以通过虚拟专用网络(virtualprivatenetwork,简称vpn)使得所有节点同在一个局域网中,所有在网节点平等接入网络,形成p2p对等网络。

进一步还可以通过非对称加密算法生成节点自身的公私钥来唯一的标识每一个开发人员。其中,私钥用于唯一标识节点,公钥用于验证节点的合法性,例如在接入网络时,或网络的定期检查过程中。

任一节点都可以向服务器上报代码,并可以查看区块链中的代码。在对等网络中,每一个节点均是对等的个体,共同参与区块链上代码的记录、存储、维护等工作。而且,区块链中的区块具有一旦生成,无法篡改的特性。

该区块链可以采用私有链形式,对读写权限或者对外开放权限进行限制。区块链上的读写权限按研发团队预定的规则来制定,例如某个开发人员对应的节点只有读取权限等。整个对等网络由各个节点共同维护,网络接入可以通过各个节点的网关接入,共识过程由预先选好的节点控制。

图1是本发明提供的代码管理方法一实施例的流程示意图。如图1所示,本实施例提供的方法,包括:

步骤101、第一用户设备接收第二用户设备上传至服务器的至少一个代码文件的信息;代码文件的信息包括代码文件对应的哈希值。

具体的,第一用户设备为通过预设的共识机制选定的节点对应的用户设备。第二用户设备为对等网络中任一节点对应的用户设备。

第二用户设备在有新的代码文件生成或修改后,将至少一个代码文件上传至服务器,并向网络中的其他节点广播代码文件的信息;由第一用户设备接收至少一个代码文件的信息。代码文件的信息包括代码文件对应的哈希值,该哈希值是根据代码文件通过哈希算法得到的。一旦代码文件被篡改,代码文件对应的哈希值就会发生改变,因此可以根据哈希值验证代码文件是否被篡改。

步骤102、第一用户设备根据至少一个代码文件的信息生成区块,并将区块加入区块链中;区块包括区块头和至少一个区块主体,区块头包括上一个区块的哈希值;区块主体包括至少一个代码文件各自对应的哈希值。

具体的,第一用户设备可以汇总预设时长内的所有代码文件的信息,并根据接收到的代码文件的信息生成区块,并将该区块加入区块链中,将区块连接到区块链的末端。

其中,第一用户设备将代码文件的信息记录到区块的区块主体中。

区块包括区块头和至少一个区块主体,如图2所示,作为一个示例,图2中的区块头包括标识id、上一个区块的哈希值、默克尔树根、时间戳和区块主体的索引;区块主体包括:代码文件对应的部门编号+研发组编号+项目编号、数据标识id、元数据描述和数据提供者及相关信息列表(数据提供者例如为上传代码文件的开发人员),每个代码文件对应的员工编号(即代码开发人员的编号)、代码名称、版本号和代码文件对应的哈希值,以及节点标识id(上传代码文件的节点id)。

其中,区块头中的id和区块主体中的数据id可以是随机生成的。本区块的哈希值可以通过默克尔树根与上一个区块的哈希值进行计算得到,并写入到下一个区块的区块头中。时间戳表示生成该区块的时间。默克尔树根是对区块主体上所有信息的汇总。

上述方案中,将代码文件上传至服务器保存,将代码文件对应的信息生成区块保存至区块链,可以防止代码文件的信息的篡改,使得可以通过区块中的代码文件的信息去验证服务器中的代码文件的真实性。

步骤103、第一用户设备将区块发送给所述服务器,以使服务器建立区块、代码文件对应的哈希值与代码文件的存储路径的三者的对应关系。

具体的,第一用户设备将生成的区块的信息发送给服务器,服务器建立该区块、代码文件对应的哈希值与代码文件的存储路径三者的对应关系。

网络中的节点查看区块链中的代码文件的信息对应的代码文件时,可以根据服务器中存储的与代码文件的存储路径的对应关系,查找到该代码文件。

本发明实施例的方法,通过区块链的方式保存代码文件的信息,利用区块链去中心化、公开透明、防止篡改的特性,并且利用私有链的交易速度快,保护隐私,交易成本极低的特性,实现了代码文件的安全存放和发布。

本实施例的方法,第一用户设备接收第二用户设备上传至服务器的至少一个代码文件的信息;所述代码文件的信息包括所述代码文件对应的哈希值;所述第一用户设备根据至少一个所述代码文件的信息生成区块,并将所述区块加入区块链中;所述区块包括区块头和至少一个区块主体,所述区块头包括上一个区块的哈希值;所述区块主体包括至少一个所述代码文件各自对应的哈希值;所述第一用户设备将所述区块发送给所述服务器,以使所述服务器建立所述区块、所述代码文件对应的哈希值与所述代码文件的存储路径的三者的对应关系,通过将代码文件存储至服务器,将代码文件的信息存储至区块链,可以防止代码文件的信息的篡改,使得可以通过区块中的代码文件的信息去验证服务器中的代码文件的真实性,从而保证了代码文件的安全性。

在上述实施例的基础上,可选的,将区块加入区块链中之前,还包括:

第一用户设备将区块广播至对等网络p2p中除所述第一用户设备之外的其他用户设备,以使其他用户设备对区块进行验证;

将区块加入区块链中,包括:

若第一用户设备接收到其他用户设备发送的验证通过的指示信息后,将区块加入区块链中。

具体的,第一用户设备在生成区块之后,可以将该区块广播至该网络中的其他用户设备,其他用户设备对该区块进行真实性验证;第一用户设备在接收到验证通过的指示信息后,将该区块连接到区块链的末端。

其中,对区块的验证,可以通过验证区块头中的哈希值实现,即验证该哈希值是否是上一个区块的哈希值。

在上述实施例的基础上,进一步的,若至少一个所述代码文件为发布包,则步骤102,具体可以通过如下步骤实现:

所述第一用户设备根据所述发布包的信息生成所述区块,并将所述区块加入所述区块链中;所述发布包的信息包括所述发布包对应的哈希值;

步骤102,具体可以通过如下步骤实现:

所述第一用户设备将所述区块发送给所述服务器,以使所述服务器建立所述区块、所述发布包对应的哈希值与所述发布包的存储路径的三者的对应关系。

具体的,若需要对发布包进行发布时,开发人员可以根据代码文件生成发布包,并通过第二用户设备将发布包上传至服务器,通过第二用户设备将发布包的信息广播到网络中。第一用户设备根据接收到的发布包的信息生成区块,并将区块加入区块链中,该发布包的信息包括发布包对应的哈希值。

第一用户设备将生成的区块的信息发送给服务器,服务器建立该区块、发布包对应的哈希值与发布包的存储路径三者的对应关系。

网络中的节点查看区块链中的发布包的信息对应的发布包时,可以根据服务器中存储的与发布包的存储路径的对应关系,查找到该发布包。

本实施例中,将发布包上传至服务器保存,将发布包的信息生成区块保存至区块链,可以防止发布包的信息的篡改,使得可以通过区块中的发布包的信息去验证服务器中的发布包的真实性。

图3是本发明提供的代码管理方法另一实施例的流程示意图。如图3所示,本实施例提供的方法,包括:

步骤301、服务器接收第二用户设备上传的至少一个代码文件;

具体的,第二用户设备在有新的代码文件生成或修改后,将至少一个代码文件上传至服务器,并向网络中的其他节点广播代码文件的信息;由第一用户设备接收至少一个代码文件的信息。代码文件的信息包括代码文件对应的哈希值,该哈希值是根据代码文件通过哈希算法得到的。一旦代码文件被篡改,代码文件对应的哈希值就会发生改变,因此可以根据哈希值验证代码文件是否被篡改。

步骤302、服务器接收所述第一用户设备发送的区块;区块为根据至少一个代码文件的信息生成的;代码文件的信息包括:代码文件对应的哈希值;区块包括区块头和至少一个区块主体,区块头包括上一个区块的哈希值;区块主体包括至少一个代码文件各自对应的哈希值;

具体的,第一用户设备可以汇总预设时长内的所有代码文件的信息,并根据接收到的代码文件的信息生成区块,并将该区块加入区块链中,将区块连接到区块链的末端。

其中,第一用户设备将代码文件的信息记录到区块的区块主体中。

区块包括区块头和至少一个区块主体,如图2所示,作为一个示例,图2中的区块头包括标识id、上一个区块的哈希值、默克尔树根、时间戳和区块主体的索引;区块主体包括:代码文件对应的部门编号+研发组编号+项目编号、数据标识id、元数据描述和数据提供者及相关信息列表(数据提供者例如为上传代码文件的开发人员),每个代码文件对应的员工编号(即代码开发人员的编号)、代码名称、版本号和代码文件对应的哈希值,以及节点标识id(上传代码文件的节点id)。

其中,区块头中的id和区块主体中的数据id可以是随机生成的。本区块的哈希值可以通过默克尔树根与上一个区块的哈希值进行计算得到,并写入到下一个区块的区块头中。时间戳表示生成该区块的时间。默克尔树根是对区块主体上所有信息的汇总。

上述方案中,将代码文件上传至服务器保存,将代码文件对应的信息生成区块保存至区块链,可以防止代码文件的信息的篡改,使得可以通过区块中的代码文件的信息去验证服务器中的代码文件的真实性。

步骤303、服务器建立并存储区块、代码文件对应的哈希值与代码文件的存储路径的三者的对应关系。

具体的,服务器建立并存储区块、代码文件对应的哈希值与代码文件的存储路径的三者的对应关系,网络中的节点查看区块链中的代码文件的信息对应的代码文件时,可以根据服务器中存储的与代码文件的存储路径的对应关系,查找到该代码文件。

可选的,区块头还包括:默克尔树根和时间戳;区块主体还包括:第二用户设备的标识信息和元数据描述信息。

可选的,还包括:

根据获取到的代码文件对应的哈希值,确定哈希值与代码文件对应的区块中包括的代码文件对应的哈希值是否一致。

具体的,若代码文件为发布包时,则上述步骤中所述服务器根据获取到的发布包对应的哈希值,确定哈希值与发布包对应的区块中包括的发布包对应的哈希值是否一致。

具体的,将发布包发布到正式环境后,服务器可以将该发布包的哈希值与区块链中保存的发布包对应的哈希值对比,查看是否一致。具体可以将发布包中的每个代码文件的哈希值与区块链中记录的代码文件的哈希值进行对比。如果都一致,就可以将发布包进行部署。

进一步的,服务器还可以提供界面查询代码文件。

本实施例的方法,其实现原理和技术效果与图1所示方法类似,此处不再赘述。

图4是本发明提供的代码管理方法又一实施例的流程示意图。如图4所示,本实施例提供的方法,包括:

步骤401、第二用户设备向服务器上传至少一个代码文件;

步骤402、第二用户设备将至少一个代码文件的信息发送至第一用户设备,以使第一用户设备根据至少一个代码文件的信息生成区块,并将区块加入区块链中;代码文件的信息包括代码文件对应的哈希值;区块包括区块头和区块主体,区块头包括上一个区块的哈希值;区块主体包括至少一个代码文件各自对应的哈希值。

可选的,区块头还包括:默克尔树根和时间戳;区块主体还包括:第二用户设备的标识信息和元数据描述信息。

本实施例的方法,其实现原理和技术效果与图1所示方法类似,此处不再赘述。

图5为本发明提供的代码管理装置一实施例的结构图,如图5所示,本实施例的代码管理装置设置在第一用户设备中,该代码管理装置包括:

接收模块501,用于接收第二用户设备上传至服务器的至少一个代码文件的信息;所述代码文件的信息包括所述代码文件对应的哈希值;

处理模块502,用于根据至少一个所述代码文件的信息生成区块,并将所述区块加入区块链中;所述区块包括区块头和至少一个区块主体,所述区块头包括上一个区块的哈希值;所述区块主体包括至少一个所述代码文件各自对应的哈希值;

发送模块503,用于将所述区块发送给所述服务器,以使所述服务器建立所述区块、所述代码文件对应的哈希值与所述代码文件的存储路径的三者的对应关系。

可选的,所述发送模块503,还用于:

所述第一用户设备将所述区块广播至对等网络p2p中除所述第一用户设备之外的其他用户设备,以使所述其他用户设备对所述区块进行验证;

所述处理模块502,具体用于:

若所述第一用户设备接收到所述其他用户设备发送的验证通过的指示信息后,将所述区块加入所述区块链中。

可选的,若至少一个所述代码文件为发布包,则所述处理模块502,具体用于:

所述第一用户设备根据所述发布包的信息生成所述区块,并将所述区块加入所述区块链中;所述发布包的信息包括所述发布包对应的哈希值;

所述发送模块503,具体用于:

所述第一用户设备将所述区块发送给所述服务器,以使所述服务器建立所述区块、所述发布包对应的哈希值与所述发布包的存储路径的三者的对应关系。

可选的,所述区块头还包括:默克尔树根和时间戳;所述区块主体还包括:所述第二用户设备的标识信息和元数据描述信息。

本实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图6为本发明提供的代码管理装置另一实施例的结构图,如图6所示,本实施例的代码管理装置设置在服务器中,该代码管理装置包括:

接收模块601,用于接收第二用户设备上传的至少一个代码文件;

所述接收模块601,还用于接收所述第一用户设备发送的区块;所述区块为根据至少一个所述代码文件的信息生成的;所述代码文件的信息包括:所述代码文件对应的哈希值;所述区块包括区块头和至少一个区块主体,所述区块头包括上一个区块的哈希值;所述区块主体包括至少一个所述代码文件各自对应的哈希值;

处理模块602,用于建立并存储所述区块、所述代码文件对应的哈希值与所述代码文件的存储路径的三者的对应关系。

可选的,所述处理模块602,还用于:

根据获取到的代码文件对应的哈希值,确定所述哈希值与所述代码文件对应的区块中包括的所述代码文件对应的哈希值是否一致。

可选的,所述区块头还包括:默克尔树根和时间戳;所述区块主体还包括:所述第二用户设备的标识信息和元数据描述信息。

本实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本发明另一实施例中还提供一种代码管理装置,该代码管理装置设置在第二用户设备中,该装置包括:

发送模块,用于向服务器上传至少一个代码文件;

所述发送模块,还用于将至少一个所述代码文件的信息发送至所述第一用户设备,以使所述第一用户设备根据至少一个所述代码文件的信息生成区块,并将所述区块加入区块链中;所述代码文件的信息包括所述代码文件对应的哈希值;所述区块包括区块头和区块主体,所述区块头包括上一个区块的哈希值;所述区块主体包括至少一个所述代码文件各自对应的哈希值。

可选的,所述区块头还包括:默克尔树根和时间戳;所述区块主体还包括:所述第二用户设备的标识信息和元数据描述信息。

本实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图7为本发明提供的第一用户设备实施例的结构图,如图7所示,该第一用户设备包括:

处理器701,以及,用于存储处理器701的可执行指令的存储器702。

可选的,还可以包括通信接口703,用于与其他设备通信。

其中,处理器701配置为经由执行所述可执行指令来执行前述方法实施例中对应的方法,其具体实施过程可以参见前述方法实施例,此处不再赘述。

图8为本发明提供的服务器实施例的结构图,如图8所示,该服务器包括:

处理器801,以及,用于存储处理器801的可执行指令的存储器802。

可选的,还可以包括通信接口803,用于与其他设备通信。

其中,处理器801配置为经由执行所述可执行指令来执行前述方法实施例中对应的方法,其具体实施过程可以参见前述方法实施例,此处不再赘述。

本发明实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述方法实施例中对应的方法,其具体实施过程可以参见前述方法实施例,其实现原理和技术效果类似,此处不再赘述。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1