一种基于Kubernetes的数据加解密方法和装置与流程

文档序号:31053309发布日期:2022-08-06 09:04阅读:151来源:国知局
一种基于Kubernetes的数据加解密方法和装置与流程
一种基于kubernetes的数据加解密方法和装置
技术领域
1.本说明书涉及计算机软件技术领域,尤其涉及一种基于kubernetes的数据加解密方法、装置、电子设备和存储介质。


背景技术:

2.对于对称或非对称的数据加解密算法,主要使用cpu的计算单元的计算能力,对计算能力要求较高。在广泛采用的云计算平台的情况下,如何提高数据加解密的计算性能,是关注热点之一。目前,云计算平台多以kubernetes pod形式部署服务,计算资源通常限定在1核cpu、2g内存以内。而在单pod条件下,对大文件,大文本的加解密过程,随着明文数据的长度增大,所需加解密时间也递增。在pod中运行的程序,虽然可以使用多线程技术,但是单pod被分配的cpu资源有限,达不到多线程并发计算的能力。因此,如何通过扩展pod以及在多pod情况下引入多线程来提高计算性能,是需要解决的技术问题。


技术实现要素:

3.本说明书实施例的目的是针对上述问题,提供一种在kubernetes中部署云原生区块链软件的方法、装置、电子设备和存储介质。
4.为解决上述技术问题,本说明书实施例是这样实现的:
5.第一方面,提出了一种基于kubernetes的数据加解密方法,在kubernetes中扩展多个用于执行数据加解密的pod;预设用于对拟加密数据进行分割的阈值;若所述拟加密数据长度大于所述阈值,包括:
6.对应于所述pod的扩展数量,分割所述拟加密数据为多份子数据,以及,对应于每份所述子数据,启动单个多线程调用相应pod依次执行相同加密算法和相同编码规则;
7.采用特定字符拼接已完成加密编码的多份所述子数据得到加密数据,所述特定字符不包括所述编码规则使用过的字符;
8.根据所述特定字符拆分所述加密数据为多份子数据,以及对应于拆分后的每份所述子数据,启动单个多线程调用相应pod依次执行对应于编码的解码规则和对应于加密的解密算法;
9.拼接已完成解码解密的多份所述子数据得到解密数据。
10.第二方面,提出了一种基于kubernetes的数据加解密装置,包括:
11.pod扩展模块,用于在kubernetes中扩展多个用于执行数据加解密的pod;
12.阈值管理模块,用于管理对拟加密数据进行分割的阈值;
13.加密编码模块,用于当所述拟加密数据长度大于所述阈值a,对应于所述pod的扩展数量,分割所述拟加密数据为多份子数据,以及,对应于每份所述子数据,启动单个多线程调用相应pod依次执行相同加密算法和相同编码规则;
14.加密数据生成模块,用于采用特定字符拼接已完成加密编码的多份所述子数据得到加密数据,所述特定字符不包括所述编码规则使用过的字符;
15.解码解密模块,用于根据所述特定字符拆分所述加密数据为多份子数据,以及对应于拆分后的每份所述子数据,启动单个多线程调用相应pod依次执行对应于编码的解码规则和对应于加密的解密算法;
16.解密数据输出模块,用于拼接已完成解码解密的多份所述子数据得到解密数据。
17.第三方面,提出了一种电子设备,包括:处理器;以及
18.被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行第一方面所述的方法。
19.第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行第一方面所述的方法。
20.本说明书可以达到至少以下技术效果:
21.本发明通过对kubernetes扩展pod,根据加密数据长度阈值对数据进行分割,采用pod对应启动线程的方式,结合等长度数据编解码规则和优化字符串拼接方式,解决了不同加密算法引起或明文加密后的密文长度不一致问题,有效提高了加解密性能,同时亦能处理文本、文档等多种类型数据。
附图说明
22.为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
23.图1为本说明书实施例提供的一种基于kubernetes的数据加解密方法示意图之一。
24.图2为本说明书实施例提供的一种基于kubernetes的数据加解密方法示意图之二。
25.图3为本说明书实施例提供的一种基于kubernetes的数据加解密装置示意图之一。
26.图4为本说明书实施例提供的一种基于kubernetes的数据加解密装置示意图之二。
27.图5为本说明书的一个实施例提供的电子设备的结构示意图。
具体实施方式
28.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
29.下面通过具体的实例对本说明书所涉及的一种基于kubernetes的数据加解密方案进行详述。
30.关键术语
31.kubernetes:简称k8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是让部署容器化的应用简单并且高效(powerful),kubernetes提供了应用部署,规划,更新,维护的一种机制。传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。
32.kubernetes pod:pod是kubernetes中能够创建和部署的最小单元,是kubernetes集群中的一个应用实例,总是部署在同一个节点node上。pod中包含了一个或多个容器,还包括了存储、网络等各个容器共享的资源。分为单容器pod和多容器pod。单容器pod最常见的应用方式;而多容器pod,kubernetes会保证所有的容器都在同一台物理主机或虚拟主机中运行。多容器pod是相对高阶的使用方式,除非应用耦合特别严重,一般不推荐使用这种方式。一个pod内的容器共享ip地址和端口范围,容器之间可以通过localhost互相访问。使用pod具有很多好处:(1)pod作为一个可以独立运行的服务单元,简化了应用部署的难度,以更高的抽象层次为应用部署管提供了极大的方便;(2)pod作为最小的应用实例可以独立运行,可以方便的进行部署、水平扩展和收缩、方便进行调度管理与资源的分配;(3)pod中的容器共享相同的数据和网络地址空间,pod之间也进行了统一的资源管理与分配。
33.实施例一
34.参照图1所示,为本发明实施例中基于kubernetes的数据加解密方法。这里需要说明的是,由于kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,本发明实施例便是在使用kubernetes搭建的云平台上实现的。但是,这并不意味着只能在kubernetes上使用,凡是能够通过扩展容器并且支持多线程工作地方式来实现数据加解密的方案,均在本发明的保护范围内。本发明实施例的方法,包括:
35.步骤101:在kubernetes中扩展多个用于执行数据加解密的pod。需要说明的是,在使用kubernetes的云平台环境下,正是利用上述介绍的pod作为最小的应用实例可以独立运行,可以方便的进行部署、水平扩展和收缩、方便进行调度管理与资源的分配的优点,假定kubernetes扩展n个pod,相当于kubernetes调度到n台主机上,也即可以使用到n个独立cpu来部署加解密程序,实质上相当于部署了一个加解密服务集群。
36.步骤102:预设用于对拟加密数据进行分割的阈值。
37.具体地,该阈值的作用是判断需要加密的数据,其长度是否适用于直接进行加解密。由于不同类型的数据,在加解密过程中对cpu性能要求存在差异,因此,合理的引入分割
阈值,能够是拟加密的数据被有效分割成若干份交由已扩展出的n个pod去处理,这样可以实现多主机协同并行处理的效果。而阈值的选定是关键因素,可选地,根据单个pod的处理能力和具体加密算法选择最优值确定。单个pod的处理能力主要是指其所调用主机的单个cpu的计算能力;而考虑具体的加密算法的影响,主要是该加密算法的计算复杂度及其在加密计算过程所需要的的计算资源。例如,可以选定1mb作为阈值,那么超过1mb的数据将会被分割成n份进行后续处理。
38.步骤103:当所述拟加密数据长度大于所述阈值,对应于所述pod的扩展数量,分割所述拟加密数据为多份子数据,以及,对应于每份所述子数据,启动单个多线程调用相应pod依次执行相同加密算法和相同编码规则。
39.具体地,假定拟加密数据data的长度大于先前设定的阈值,那么此时若kubernetes已扩展了n个pod,那么data将会被分割为n份,即data={data_1,data_2,

,data_n},这里并未要求n份数据是等大小分割,也就是说等大小还是不等大小分割均不影响本实施例的方案。而对于其中的每份子数据由主程序为其启动一个多线程,也即data_1对应于thread_1_e,data_n对应于thread_n_e。每一个多线程则对应于一个pod,由pod执行相应的加密算法对数据进行加密,即data_1对应于thread_1_e,thread_1_e调用pod_1来对data_1进行加密计算。同理,data_2,

,data_n也完成相应的加密计算,而{data_1,data_2,

,data_n}使用的加密是方法是完全相同的,这是显而易见的。加密计算后,得到{data_1_e,data_2_e,

,data_n_e}。而如前所述,由于n份数据未必是等长度分割,这就造成了经过加密后的密文长度也可能是不相同的,由于密文需要进行组合后才能形成最终加密数据,且如果按照长度规则对密文进行解密会增加后续密文解密过程的复杂度。接下来需要对{data_1_e,data_2_e,

,data_n_e}使用相同的编码规则进行编码,以使编码后的{data_1_e,data_2_e,

,data_n_e}具有相同的密文长度。
40.可选地,凡是能使得编码后的密文具有相同长度的编码规则,都在本发明的保护范围内,例如可使用base64编码规则或者base58编码规则等。本实施例中,选用base64作为编码规则。base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。如果剩下的字符不足3个字节,则用0填充,输出字符使用



,因此编码后输出的文本末尾可能会出现1或2个



;为了保证所输出的编码位可读字符,base64制定了一个编码表,以便进行统一转换。编码表的大小为26=64,这也是base64名称的由来。这里对于base64的工作原理不再赘述,但编码结束后,n份数据{data_1_e64,data_2_e64,

,data_n_e64}应有相同的长度。
41.步骤104:采用特定字符拼接已完成加密编码的多份所述子数据得到加密数据,所述特定字符不包括所述编码规则使用过的字符。为了后续解密过程的可识别性,这里选用的特定字符必须是上述编码规则中未使用过的字符,例如,不能包括base64编码使用过的64个字符以及=。假定本实施例中使用@作为特定字符进行拼接,即得到的加密数据为:data_e64=data_1_e64@data_2_e64@

@data_n_e64。
42.步骤105:根据所述特定字符拆分所述加密数据为多份子数据,以及对应于拆分后的每份所述子数据,启动单个多线程调用相应pod依次执行对应于编码的解码规则和对应于加密的解密算法。
43.具体地,数据解密过程与加密过程是对应相反过程。在本实施例中,由于使用了@
作为特定字符进行拼接得到了加密数据data_e64=data_1_e64@data_2_e64@

@data_n_e64,因此,在解密过程中,首先识别@并根据@将data_e64=data_1_e64@data_2_e64@

@data_n_e6拆分为独立的子数据{data_1_e64,data_2_e64,

,data_n_e64}。而对于其中的每份子数据由主程序为其启动一个多线程,也即data_1_e64对应于thread_1_d,data_n_e64对应于thread_n_d。每一个多线程则对应于一个pod,由pod执行相应的base64解码规则,先将子数据解码为{data_1_e,data_2_e,

,data_n_e},在使用对应的解密算法对数据进行解密为{data_1,data_2,

,data_n},具体解密过程不再赘述。
44.步骤106:拼接已完成解码解密的多份所述子数据得到解密数据。也即,对每份解码解密数据字节流,进行字节流拼接,拼接后的完整字节流data=data_1data_2

data_n作为加密结果返回。
45.本实施例提出一种基于kubernetes的数据加解密方法的另一种实现方案如图2所示,还包括:
46.步骤107:当拟加密数据长度不大于所述阈值时,所述拟加密数据执行相应加密算法后得到加密数据,以及,所述加密数据执行相应解密算法并输出解密数据。需要说明的是,拟加密数据的长度如未超过阈值,那么通过分割数据进而调用pod启动线程来加解密,未必能达到提升加解密计算性能的效果,因为对于多集群而言,调用资源、启动线程等过程同样需要调用计算资源。因此,这也说明了如何能平衡单个pod处理能力和具体加密算法的计算复杂度选择最优的阈值是本发明方案的关键之一。
47.实施例二
48.图3为本说明书的一个实施例提供的一种基于kubernetes的数据加解密装置300的结构示意图。请参考图3,在一种实施方式中基于kubernetes的数据加解密装置,包括:
49.pod扩展模块301,用于在kubernetes中扩展多个用于执行数据加解密的pod。
50.阈值管理模块302,用于管理对拟加密数据进行分割的阈值。
51.加密编码模块303,用于当所述拟加密数据长度大于所述阈值a,对应于所述pod的扩展数量,分割所述拟加密数据为多份子数据,以及,对应于每份所述子数据,启动单个多线程调用相应pod依次执行相同加密算法和相同编码规则。
52.加密数据生成模块304,用于采用特定字符拼接已完成加密编码的多份所述子数据得到加密数据,所述特定字符不包括所述编码规则使用过的字符。
53.解码解密模块305,用于根据所述特定字符拆分所述加密数据为多份子数据,以及对应于拆分后的每份所述子数据,启动单个多线程调用相应pod依次执行对应于编码的解码规则和对应于加密的解密算法。
54.解密数据输出模块306,用于拼接已完成解码解密的多份所述子数据得到解密数据。
55.本实施例提出一种基于kubernetes的数据加解密装置的另一种实现方案,如图4所示,还包括:
56.短数据加解密模块307,用于当拟加密数据长度不大于所述阈值时,所述拟加密数据执行相应加密算法后得到加密数据,以及,所述加密数据执行相应解密算法并输出解密数据。
57.应理解,本说明书实施例的一种基于kubernetes的数据加解密装置还可执行图1
至图2中基于kubernetes的数据加解密装置(或设备)执行的方法,并实现基于kubernetes的数据加解密装置(或设备)在图1至图2所示实例的功能,在此不再赘述。
58.实施例四
59.图5是本说明书的一个实施例电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-access memory,ram),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
60.处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
61.存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
62.处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成共享资源访问控制装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
63.在kubernetes中扩展多个用于执行数据加解密的pod;预设用于对拟加密数据进行分割的阈值;当所述拟加密数据长度大于所述阈值,包括:
64.对应于所述pod的扩展数量,分割所述拟加密数据为多份子数据,以及,对应于每份所述子数据,启动单个多线程调用相应pod依次执行相同加密算法和相同编码规则;
65.采用特定字符拼接已完成加密编码的多份所述子数据得到加密数据,所述特定字符不包括所述编码规则使用过的字符;
66.根据所述特定字符拆分所述加密数据为多份子数据,以及对应于拆分后的每份所述子数据,启动单个多线程调用相应pod依次执行对应于编码的解码规则和对应于加密的解密算法;
67.拼接已完成解码解密的多份所述子数据得到解密数据。
68.上述如本说明书图1至图2所示实施例揭示的一种基于kubernetes的数据加解密方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译
码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
69.当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
70.实施例五
71.本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1至图2所示实施例的方法,并具体用于执行以下方法:
72.在kubernetes中扩展多个用于执行数据加解密的pod;预设用于对拟加密数据进行分割的阈值;当所述拟加密数据长度大于所述阈值,包括:
73.对应于所述pod的扩展数量,分割所述拟加密数据为多份子数据,以及,对应于每份所述子数据,启动单个多线程调用相应pod依次执行相同加密算法和相同编码规则;
74.采用特定字符拼接已完成加密编码的多份所述子数据得到加密数据,所述特定字符不包括所述编码规则使用过的字符;
75.根据所述特定字符拆分所述加密数据为多份子数据,以及对应于拆分后的每份所述子数据,启动单个多线程调用相应pod依次执行对应于编码的解码规则和对应于加密的解密算法;
76.拼接已完成解码解密的多份所述子数据得到解密数据。
77.总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书的保护范围之内。
78.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
79.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
80.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的
包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
81.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1