CN112035866B - 一种数据加密方法、装置、设备和计算机可读存储介质 - Google Patents

一种数据加密方法、装置、设备和计算机可读存储介质 Download PDF

Info

Publication number
CN112035866B
CN112035866B CN202011219232.8A CN202011219232A CN112035866B CN 112035866 B CN112035866 B CN 112035866B CN 202011219232 A CN202011219232 A CN 202011219232A CN 112035866 B CN112035866 B CN 112035866B
Authority
CN
China
Prior art keywords
sub
encryption
instruction
packet
instruction 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
Application number
CN202011219232.8A
Other languages
English (en)
Other versions
CN112035866A (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.)
Hubei Xinqing Technology Co ltd
Original Assignee
Hubei Xinqing 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 Hubei Xinqing Technology Co ltd filed Critical Hubei Xinqing Technology Co ltd
Priority to CN202011219232.8A priority Critical patent/CN112035866B/zh
Publication of CN112035866A publication Critical patent/CN112035866A/zh
Application granted granted Critical
Publication of CN112035866B publication Critical patent/CN112035866B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请涉及数据加解密领域,提供了数据加密方法、装置、设备和计算机可读存储介质。所述方法包括:主机将主指令包拆分为n个子指令包后发送至加解密引擎,其中,n为大于或等于2的整数;主机控制n个子指令包中每个子指令包被加解密引擎执行加密的进度;在主机对每个子指令包加密进行进度的控制下,加解密引擎对每个子指令包执行加密;加解密引擎以共享加解密引擎内部IP核提供的内存的方式,缓存每个子指令包的中间加密结果;当完成n个子指令包的加密后,加解密引擎将主指令包的完整加密结果返回至主机。本申请提供的技术方案无需由主机每次获得一个子指令包的中间结果,从而节省了主机CPU的资源,提升了数据处理的整体性能。

Description

一种数据加密方法、装置、设备和计算机可读存储介质
技术领域
本发明涉及数据加解密领域,特别涉及一种数据加密方法、装置、设备和计算机可读存储介质。
背景技术
在数据加解密领域,国密SM3、SM4等算法性能较低,CPU不支持指令优化,同时,由于硬件资源的有限性,通过硬件电路实现的国密算法并不能支持大包数据的运算,一般需要通过主机(Host)对数据进行分包处理,然后循环调用硬件引擎实现加解密运算。
具体而言,现有的一种数据加解密为:主机每发出一个指令包给加解密引擎,在加解密引擎对这些指令执行加解密后,则向主机返回一个加密或解密的结果。对于较长的指令包,主机首先将其进行拆分为多个子指令包,分别下发至加解密引擎。加解密引擎每执行一次对一个子指令包的加解密,则向主机返回该子指令包的加解密的结果,待所有子指令包加解密完成后,主机将这些子指令包的加解密的结果组装成整个指令包的加解密的结果。
然而,这种方案占用了主机的CPU资源,影响数据运算的整体性能。
发明内容
本申请提供一种数据加密方法、装置、设备和计算机可读存储介质,以减小对主机CPU资源的占用,并且提升加密的整体运算性能。
一方面,本申请提供了一种数据加密方法,包括:
主机将主指令包拆分为n个子指令包后发送至加解密引擎,所述n为大于或等于2的整数;
所述主机控制所述n个子指令包中每个子指令包被所述加解密引擎执行加密的进度;
在所述主机对每个子指令包加密进行进度的控制下,所述加解密引擎对所述每个子指令包执行加密;
所述加解密引擎将首次加密结果缓存至加解密引擎内部IP核提供的内存,所述首次加密结果为所述加解密引擎从所述加解密引擎内部IP核提供的内存读取加密参数对所述n个子指令包的首子指令包进行加密得到的结果;
对于所述首子指令包的后续各个子指令包,所述加解密引擎均从所述加解密引擎内部IP核提供的内存读取前一个子指令包的加密结果,以用于对当前子指令包进行加密;
所述加解密引擎将所述当前子指令包的加密结果缓存至所述加解密引擎内部IP核提供的内存,以供后续子指令包进行加密使用;
当完成所述n个子指令包的加密后,所述加解密引擎将所述主指令包的完整加密结果返回至所述主机。
另一方面,本申请提供了一种数据加密装置,包括主机和加解密引擎,所述主机包括指令拆分模块和进度控制模块,所述加解密引擎包括加解密模块、缓存模块和结果输出模块;
所述指令拆分模块,用于将主指令包拆分为n个子指令包后发送至加解密引擎,所述n为大于或等于2的整数;
所述进度控制模块,用于控制所述n个子指令包中每个子指令包被所述加解密引擎执行加密的进度;
所述加解密模块,用于在所述主机对每个子指令包加密进行进度的控制下,对所述每个子指令包执行加密;
所述缓存模块,用于将首次加密结果缓存至加解密引擎内部IP核提供的内存,对于所述首子指令包的后续各个子指令包,均从所述加解密引擎内部IP核提供的内存读取前一个子指令包的加密结果,以用于对当前子指令包进行加密,将所述当前子指令包的加密结果缓存至所述加解密引擎内部IP核提供的内存,以供后续子指令包进行加密使用,所述首次加密结果为所述加解密引擎从所述加解密引擎内部IP核提供的内存读取加密参数对所述n个子指令包的首子指令包进行加密得到的结果;
所述结果输出模块,用于当完成所述n个子指令包的加密后,将所述主指令包的完整加密结果返回至所述主机。
第三方面,本申请提供了一种设备,所述设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述技术方案的方法的步骤。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述技术方案的方法的步骤。
从上述本申请提供的技术方案可知,由于被主机拆分成的n个子指令包被加解密引擎加密后,加解密引擎以共享其内部IP核提供的内存的方式,对每个子指令包的加密结果予以缓存后,将主指令包的完整加密结果后返回至主机,即加解密引擎利用其内部的内存资源缓存每个子指令包的中间加密结果,而无需由主机每次获得一个子指令包的中间结果,从而节省了主机CPU的资源,提升了数据处理的整体性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的数据加密方法的流程图;
图2是本申请实施例提供的主指令包的结构示意图;
图3是本申请实施例提供的主指令包被拆分为4个子指令包的示意图;
图4是本申请实施例提供的指令描述符的结构示意图;
图5是本申请实施例提供的数据加密装置的结构示意图;
图6是本申请实施例提供的设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本说明书中,诸如第一和第二这样的形容词仅可以用于将一个元素或动作与另一元素或动作进行区分,而不必要求或暗示任何实际的这种关系或顺序。在环境允许的情况下,参照元素或部件或步骤(等)不应解释为局限于仅元素、部件、或步骤中的一个,而可以是元素、部件、或步骤中的一个或多个等。
在本说明书中,为了便于描述,附图中所示的各个部分的尺寸并不是按照实际的比例关系绘制的。
本申请提出了一种数据加密方法,如图1所示。需要说明的是,图1示例的方法,其执行主体包括主机(host)和加解密引擎。图1示例的方法主要包括步骤S101至S107,详述如下:
步骤S101:主机将主指令包拆分为n个子指令包后发送至加解密引擎,其中,n为大于或等于2的整数。
在本申请实施例中,主指令包是指拆分之前,由主机发往加解密引擎,以便由加解密引擎对其进行加密的数据包,一般而言,该数据包较长,主要包含地址偏移域(Offset)、前置附加域(PRE_AAD)、净荷域(Payload)和后置附加域(POST_AAD)等字段,如图2所示,是主指令包的结构示意图。这些主指令包字段中,地址偏移域的内容是被加密数据(即净荷域的内容)的开始地址偏移,前置附加域的内容为前置的附加鉴权数据,净荷域的内容为需要被加解密引擎处理的明文数据,后置附加域的内容为后置的附加鉴权数据。作为本申请一个实施例,主机将主指令包拆分为n个子指令包后发送至加解密引擎可通过如下步骤S1011和步骤S1012实现,说明如下:
步骤S1011:按照字节对齐的原则,依次将主指令包中的前置附加域、净荷域和后置附加域进行拆分,得到n个子指令包。
在本申请实施例中,可以按照预定大小的字节,对主指令包进行拆分。具体而言,步骤S1011的实现如下S1至S4:
S1:对前置附加域进行拆分,若前置附加域大于M个字节,则从前置附加域拆分出M个字节作为一个子指令包,其中,M为大于1的自然数。
S2:若前置附加域不足M个字节或前置附加域被拆分出M个字节后剩余部分不足M个字节,则从净荷域紧挨在前置附加域最后一个字节的部分拆分出M个字节,将从净荷域拆分出的M个字节与前置附加域或前置附加域的剩余部分一起组成一个子指令包。
S3:对净荷域进行拆分,若净荷域大于M个字节,则从净荷域拆分出M个字节作为一个子指令包。
S4:若净荷域不足M个字节或净荷域被拆分出M个字节后剩余部分不足M个字节,则将后置附加域与净荷域或净荷域的剩余部分一起组成一个子指令包。
需要说明的是,上述S1至S4表示的组建子指令包过程中,对后置附加域实际上不做拆分,即,按照步骤S1至S4表示方法对主指令包拆分后,剩下的最后部分可直接作为一个子指令包。
以总共包含292个字节的主指令包为例,如图3所示(其中IV表示初始向量域),其前置附加域包含104字节的内容,净荷域包含148字节的内容,后置附加域包含40字节的内容。若按照上述S1至S4示例的方法,并将M设为64,则步骤S1011的实现如下:
由于前置附加域包含的总字节数大于64,因此,可以紧挨在IV域的首字节为起点,从前置附加域直接拆分出64字节作为第1个子指令包(sub-command_1)。由于主指令包的前置附加域还剩余40字节,小于64字节,因此,需要从紧挨前置附加域剩余40字节的最后一个字节部分,即净荷域的首字节开始,拆分出64字节,将这64个字节与前置附加域剩余的40字节一起构成第2个子指令包(sub-command_2)。在对净荷域拆分时,由于净荷域剩余部分尚有84字节,其大于64字节,因此,可以直接从这84字节拆分出64字节构成第3个子指令包(sub-command_3)。当完成第3个子指令包的组建后,净荷域剩余字节为20字节,尚不足64字节,因此,可以将后置附加域的40字节一起,构成第4个子指令包(sub-command_4),至此,将包含292字节的主指令包全部拆分完毕,其结果如图3所示。
步骤S1012:按照先发送包含前置附加域的子指令包、再发送包含净荷域的子指令包、最后发送包含后置附加域的子指令包的顺序,将n个子指令包一次性发送至加解密引擎。
按照图3的示例,是依次发送sub-command_1、sub-command_2、sub-command_3和sub-command_4,一次性将4个子指令包发送至加解密引擎。
步骤S102:主机控制n个子指令包中每个子指令包被加解密引擎执行加密的进度。
需要说明的是,本申请实施例提及的“加解密”意指对子指令包进行加密操作或解密操作。作为本申请一个实施例,主机控制n个子指令包中每个子指令包被加解密引擎执行加密的进度可以通过如下方法实现:生成写指令指示器(Producer Index),根据写指令指示器的指示,将n个子指令包中每一个子指令包对应的指令描述符存储至第一环形队列,其中,写指令指示器用于对下一个将要写入第一环形队列的指令描述符(commanddescriptor)进行指示,而指令描述符包括关于一个子指令包的存储地址、大小、开始标识和结束标识等信息的记录,并且,一个指令描述符对应于n个子指令包中一个子指令包。需要说明的是,本申请实施例中的写指令指示器相当于一个索引,其通常与后续实施例提及的读指令指示器(Consumer Index)配对使用,即两者的关系通常影响对第一环形队列中指令描述符的存取。
另需说明的是,虽然主机发送过来的n个子指令包存储于加解密引擎这一侧的内存中,然而,第一环形队列并不存储n个子指令包本身,而是存储n个子指令包中每个子指令包对应的指令描述符。指令描述符的结构如图4所示,其每个字段的解释如下:
字段Source Packet Address[31:0]表示内存中源数据地址的低32位;
字段Source Packet Address[63:32]表示内存中源数据地址的高32位;
字段Destination Packet Address[31:0]表示内存中目的数据地址的低32位;
字段Destination Packet Address[63:32]表示内存中目的数据地址的高32位;
字段Source Packet offset表示源数据地址的偏移;
字段Destination Packet offset表示目的数据地址的偏移;
字段Pre AAD Length表示PRE_AAD(前置附加域)的长度;
字段Post AAD Length表示POST_AAD(后置附加域)的长度;
字段Proc Length表示整个需要处理的主指令包即包括PRE_AAD和payload(净荷域)等部分的长度;
字段ICV offset表示完整性校验值的在SM3核输出结果时的偏移位置;
字段IV enable表示初始向量使能(Initial Vector enable,IV enable),若字段IV enable使能(例如,其对应的寄存器值取逻辑“1”),将会去源数据中去获取IV值,否则会从Key Context Buffer中获取IV值;
字段IV offset表示源数据中的IV偏移位置;
字段Control表示对各个寄存器值的控制;
字段Reserved是保留字段,用于后续扩展功能;
字段AUX_INFO中的MSG_BEGIN和MSG_END配对使用,其值不同,即表示不同的含义,例如,当MSG_BEGIN=1且MSG_END=0时,表示该指令描述符对应的子指令包是主指令包拆分出来的首子指令包,当MSG_BEGIN=0且MSG_END=1时,表示该指令描述符对应的子指令包是主指令包拆分出来的尾子指令包即最后一个子指令包,而当MSG_BEGIN=0且MSG_END=0时,表示该指令描述符对应的子指令包是主指令包拆分出来的中间指令包即既不是首子指令包,也不是尾子指令包。
上述图4中,其表头的数字0、16、30和31等用于定性表示各个字段在地址中的占位高低,例如字段Source Packet Address占据整个32位地址的0~31位,字段DestinationPacket offset占据整个32位地址的低0~15位,字段Source Packet offset占据整个32位地址的高16~31位,而字段IV enable仅仅占据整个32位地址的第31位(最高位),等等。“0x00”、“0x04”和“0x08”等表示相应字段在内存存储单元中的起始地址。
步骤S103:在主机对每个子指令包加密进行进度的控制下,加解密引擎对每个子指令包执行加密。
作为本申请一个实施例,步骤S103可通过如下步骤S1031至步骤S1033实现,说明如下:
步骤S1031:获取读指令指示器,其中,读指令指示器用于对下一个将要从第一环形队列读取的指令描述符进行指示。
此处的第一环形队列就是前述实施例提及的第一环形队列,用于存储指令描述符。
步骤S1032:当读指令指示器的值与写指令指示器的值不相等时,根据读指令指示器的指示,从第一环形队列读取n个子指令包中一个子指令包对应的指令描述符。
由于存储指令描述符的队列是环形结构,根据前述对读指令指示器和写指令指示器的功能的解释,当读指令指示器的值与写指令指示器的值相等时即读指令指示器和写指令指示器均指向第一环形队列的同一存储单元,则意味着第一环形队列处于空的状态即第一环形队列中没有指令描述符,反之,当读指令指示器的值与写指令指示器的值不相等时,表明第一环形队列中尚有指令描述符,加解密引擎可以根据读指令指示器的指示,从第一环形队列读取n个子指令包中一个子指令包对应的指令描述符。
此处需要说明的是,读指令指示器的值与写指令指示器的值不相等,实际包含一种特殊情况,即写指令指示器对第一环形队列的指示落后于读指令指示器对第一环形队列的指示,这种情况一般是这样发生的:随着写指令指示器以比读指令指示器更快的速度在第一环形队列上移动,即,向第一环形队列写入指令描述符的速度比从第一环形队列读取指令描述符的速度要快,如此,第一环形队列中的指令描述符越积越多,一段时间后,对第一环形队列的指示原本领先于读指令指示器的写指令指示器,最终落后于读指令指示器对第一环形队列的指示,此时,就意味着第一环形队列已经被写满。
步骤S1033:按照从第一环形队列读取n个子指令包中一个子指令包对应的指令描述符中的记录,对指令描述符对应的子指令包进行加密。
具体而言,步骤S1033的实现可以是:判断第一环形队列是否为空,若第一环形队列不为空,则以轮询方式调度多个加解密单元中任意一个空闲的加解密单元,其中,判断第一环形队列是否为空可以根据读指令指示器的值与写指令指示器的值是否相等来确定,若读指令指示器的值与写指令指示器的值相等,则第一环形队列已空,否则,不为空。至于在第一环形队列不为空时,以轮询方式调度多个加解密单元中任意一个空闲的加解密单元对指令描述符对应的子指令包进行加密,具体可以是:(1)若存在多个虚拟功能(VirtualFunction,VF)单元,每个VF管理一套寄存器,每一套寄存器管理一个第一环形队列(即command ring)和第二环形队列(即status ring);(2)每个VF在第一环形队列不为空时,都会向调度器(scheduler)提出读指令描述符的请求;(3)若过程有限状态机(PROCedure-Finite State Machine,PROC_FSM)空闲,调度器在多个读指令描述符的请求中以轮询(round robin)的方式选择一个读指令描述符的请求;(4)调度器通过下行DMA(downstream DMA),按照读指令描述符的请求中的地址,将相应的子指令包读取至国密算法模块(SM4或SM3)中;(5)调度器分析该子指令包,若该子指令包有误,则调度器会向当前虚拟功能(Virtual Function,VF),例如,虚拟机管理的status ring中写入一个status字段,status字段中包含错误信息,之后调度器等待PROC_FSM有空闲,重复上述(3),若该子指令包无误,则调度器将该子指令包分配给一个PROC_FSM去执行,此后,调度器继续等待PROC_FSM有空闲,重复上述(3);(6)PROC_FSM执行该子指令包,具体过程一船包括:搬移前置附加域,将净荷域中的明文数据加密,使用哈希引擎(hash_engine)计算完整性校验值(Integrity Check Value,ICV),不同的功能会调用不同的加解密引擎,读取数据通过下行数据流DMA(down stream DMA),写数据通过上行数据流DMA(up stream DMA);(7)SM4分组加密支持不同的模式,SM4核执行任何模式都相同的那一部分计算,cipher_engine和gcm_engine(Galois Counter Mode,即伽罗瓦计数器模式的加密引擎)处理不同模式间不同的运算步骤;(8)SM3的hash_engine支持不同的模式,SM3核执行任何模式都相同的那一部分计算,hash_engine处理不同模式间不同的运算步骤;(9)在主指令包字段中包括有每个子指令包信息,表示当前子指令包是一长串主指令包中的第一个、中间的一个还是最后一个,过程管理控制模块(Procedure Management control,PM ctrl)在scheduler选中这个子指令包时记录子指令包信息,根据这个信息控制PROC_FSM、engine(hash engine、ciphengine和gcm engine等)、core(SM3核和SM4核)的计算,使它们的计算因子指令包在长包中的位置而改变。
步骤S104:加解密引擎将首次加密结果缓存至加解密引擎内部IP核提供的内存,其中,首次加密结果为加解密引擎从加解密引擎内部IP核提供的内存读取加密参数后对n个子指令包的首子指令包进行加密得到的结果。
在本申请实施例中,加解密引擎内部IP核提供的内存包括密钥上下文缓存(KeyContext Buffer),而首次加密结果为加解密引擎从加解密引擎内部IP核提供的内存(即加解密引擎内部IP核提供的密钥上下文缓存)读取加密参数,然后,使用该加密参数对n个子指令包的首子指令包进行加密得到的结果,其中,加密参数包括密钥上下文缓存中存储的密钥(Key)和初始化向量(Initial Vector,IV)等。需要说明的是,密钥上下文缓存中存储的Key和IV只在加解密引擎对首子指令包进行加密时需要,对首子指令包之后的各个子指令包的加密,不再需要加密运算开始之前从密钥上下文缓存中读取的Key和IV。此外,从加密本身的意义出发,首子指令包应该包含主指令包的净荷(payload)部分,若首子指令包并不包含主指令包的任何净荷部分,则可以从首子指令包的后续子指令包开始进行加密,因此,从这个意义上讲,在本申请实施例中,首子指令包可以只做狭义理解,即,首子指令包未必是从主指令包拆分下来的第一个子指令包,而是从主指令包拆分下来且第一个包含主指令包的净荷部分的子指令包。
如前所述,首次加密结果是读取Key和IV后,加解密引擎对首子指令包进行加密的结果。当Key和IV被从加解密引擎内部IP核提供的内存读取出来后,加解密引擎内部IP核提供的内存暂时处于空闲状态。为了充分利用这个空闲资源,可以将首次加密结果缓存至加解密引擎内部IP核提供的内存。
步骤S105:对于首子指令包的后续各个子指令包,均读取前一个子指令包的加密结果,以用于对当前子指令包进行加密。
当前子指令包即当前已经取出并需要进行加密的子指令包,首子指令包的后续各个子指令包在对当前时刻都可以是当前子指令包,例如,假设主指令包被拆分出4个子指令包即首子指令包(sub-command_1)、第2个子指令包(sub-command_2)、第3个子指令包(sub-command_3)和第4个子指令包(sub-command_4),则当前子指令包即当前已经从内存取出并需要进行加密的一个子指令包,例如第2个子指令包。对于第2个子指令包,加解密引擎需要从加解密引擎内部IP核提供的内存读取第2个子指令包的前一个子指令包的加密结果即首子指令包的加密结果,采用首子指令包的加密结果对该第2个子指令包进行加密;同样地,若当前子指令是第3个子指令包,则对于当前子指令包,加解密引擎需要从加解密引擎内部IP核提供的内存读取前一个子指令包即第2个子指令包的加密结果,采用第2个子指令包的加密结果对该第3个子指令包进行加密,等等。至于加密的具体算法,可以是SM3算法,也可以是SM4算法,对于SM3算法,可以将每一个子指令包的哈希(hash)运算的结果用于下一个子指令包(即该子指令包之后的一个子指令包)的哈希运算,而SM4算法,可以将每一个子指令包的加密运算的结果,作为对下一个子指令包进行加密运算的IV的值。
步骤S106:将当前子指令包的加密结果缓存至加解密引擎内部IP核提供的内存,以供后续子指令包进行加密使用。
对于每一个当前子指令包,加解密引擎从加解密引擎内部IP核提供的内存读取当前子指令包的前一个子指令包的加密结果进行加密,得到当前子指令包的加密结果后,加解密引擎内部IP核提供的内存又处于暂时空闲状态,此时,将当前子指令包的加密结果缓存至该暂时处于空闲状态的内存。按照前述主指令包被拆分出4个子指令包的实施例,若当前子指令包是第2个子指令包,则经历步骤S105之后,得到第2个子指令包的加密结果,此时由于从加解密引擎内部IP核提供的内存读取了首子指令包的加密结果,加解密引擎内部IP核提供的内存暂时处于空闲状态,因此,可以将第2个子指令包的加密结果缓存至加解密引擎内部IP核提供的内存,以供后续第3个子指令包进行加密使用;同样地,若当前子指令包是第3个子指令包,则经历步骤S105之后,得到第3个子指令包的加密结果,此时由于从加解密引擎内部IP核提供的内存读取了第2个子指令包的加密结果,加解密引擎内部IP核提供的内存暂时处于空闲状态,因此,可以将第3个子指令包的加密结果缓存至加解密引擎内部IP核提供的内存,以供后续第4个子指令包进行加密使用,等等。
需要说明的是,上述对子指令包的加密过程中,各个子指令包需要在相同的指令通道中执行加密,隶属于不同的主指令包的子指令包可以交错在同一指令通道中执行加密,但每个主指令包需要使用独立的密钥上下文索引(key context index),例如,子指令包11(sub-command_11)、子指令包12(sub-command_12)和子指令包13(sub-command_13)是从主指令包1(packet-1)拆分出来的3个子指令包,子指令包21(sub-command_21)和子指令包22(sub-command_22)是从主指令包2(packet-2)拆分出来的2个子指令包,则sub-command_11、sub-command_12和sub-command_13需要在同一指令通道,例如指令通道1(command channel-1)中执行加密,也可以都在指令通道2(command channel-2)中执行加密,还可以是sub-command_11、sub-command_12、sub-command_13和sub-command_21同时在command channel-1或command channel-2中执行加密,但不可以让sub-command_11和sub-command_12在command channel-1中执行加密,sub-command_13在command channel-2中执行加密,并且,packet-1和packet-2分别使用独立的key context index,而不能使用同一个key context index。
步骤S107:当完成n个子指令包的加密后,加解密引擎将主指令包的完整加密结果后返回至主机。
作为本申请一个实施例,当完成n个子指令包的加密后,加解密引擎将主指令包的完整加密结果后返回至主机可通过如下步骤S1071至步骤S1073实现:
步骤S1071:查询第二环形队列,其中,第二环形队列用于存储状态描述符。
在本申请实施例中,第二环形队列即status ring用于存储状态描述符(StatusDescriptor),一个状态描述符是关于一个子指令包加密结果的记录,而第二环形队列与前述实施例的第一环形队列类似,其也具有两个配对使用的指示器即读状态指示器和写状态指示器,其中,读状态指示器用于对下一个将要从第二环形队列读取的状态描述符进行指示,写状态指示器用于对下一个将要写入第二环形队列的状态描述符进行指示。
步骤S1072:若第二环形队列为空,则确定完成n个子指令包的加密。
与第一环形队列是否为空类似,在本申请实施例中,可以根据读状态指示器的值与写状态指示器的值是否相当来判断第二环形队列是否为空。当读状态指示器的值与写状态指示器的值相等时,则第二环形队列为空,即确定完成n个子指令包的加密。
步骤S1073:将n个子指令包中最后一个子指令包的加密结果作为主指令包的完整加密结果返回给主机。
从上述图1示例的数据加密方法可知,由于被主机拆分成的n个子指令包被加解密引擎加密后,加解密引擎以共享其内部IP核提供的内存的方式,对每个子指令包的加密结果予以缓存后,将主指令包的完整加密结果后返回至主机,即加解密引擎利用其内部的内存资源缓存每个子指令包的中间加密结果,而无需由主机每次获得一个子指令包的中间结果,从而节省了主机CPU的资源,提升了数据处理的整体性能。
请参阅图5,是本申请实施例提供的一种数据加密装置,该数据加密装置可以包括主机501和加解密引擎502,其中,主机501包括指令拆分模块503和进度控制模块504,加解密引擎502包括加解密模块505、缓存模块506和结果输出模块507,详述如下:
指令拆分模块503,用于将主指令包拆分为n个子指令包后发送至加解密引擎502,其中,n为大于或等于2的整数;
进度控制模块504,用于控制n个子指令包中每个子指令包被加解密引擎502执行加密的进度;
加解密模块505,用于在主机501对每个子指令包加密进行进度的控制下,对每个子指令包执行加密;
缓存模块506,用于将首次加密结果缓存至加解密引擎内部IP核提供的内存,对于首子指令包的后续各个子指令包,均从加解密引擎内部IP核提供的内存读取前一个子指令包的加密结果,以用于对当前子指令包进行加密,将当前子指令包的加密结果缓存至所述加解密引擎内部IP核提供的内存,以供后续子指令包进行加密使用,其中,首次加密结果为加解密引擎从所述加解密引擎内部IP核提供的内存读取加密参数后对n个子指令包的首子指令包进行加密得到的结果;
结果输出模块507,用于当完成n个子指令包的加密后,将主指令包的完整加密结果返回至主机501。
可选地,图5示例的指令拆分模块503可以包括域拆分单元和发送单元,其中:
域拆分单元,用于按照字节对齐的原则,依次将主指令包中的前置附加域、净荷域和后置附加域进行拆分,得到n个子指令包;
发送单元,用于按照先发送包含前置附加域的子指令包、再发送包含净荷域的子指令包、最后发送包含后置附加域的子指令包的顺序,将n个子指令包一次性发送至加解密引擎。
可选地,上述域拆分单元包括前置附加域第一拆分单元、前置附加域第二拆分单元、净荷域第一拆分单元和净荷域第二拆分单元,其中:
前置附加域第一拆分单元,用于对前置附加域进行拆分,若前置附加域大于M个字节,则从前置附加域拆分出M个字节作为一个子指令包,其中,M为大于1的自然数;
前置附加域第二拆分单元,用于若前置附加域不足M个字节或前置附加域被拆分出M个字节后剩余部分不足M个字节,则从净荷域紧挨在前置附加域最后一个字节的部分拆分出M个字节,将从净荷域拆分出的M个字节与前置附加域或前置附加域的剩余部分一起组成一个子指令包;
净荷域第一拆分单元,用于对净荷域进行拆分,若净荷域大于M个字节,则从净荷域拆分出M个字节作为一个子指令包;
净荷域第二拆分单元,用于若净荷域不足M个字节或净荷域被拆分出M个字节后剩余部分不足M个字节,则将后置附加域与净荷域或净荷域的剩余部分一起组成一个子指令包。
可选地,图5示例的进度控制模块504可以包括生成单元和存储单元,其中:
生成单元,用于生成写指令指示器,其中,写指令指示器用于对下一个将要写入第一环形队列的指令描述符进行指示,一个指令描述符对应于n个子指令包中一个子指令包;
存储单元,用于根据写指令指示器的指示,将n个子指令包中每一个子指令包对应的指令描述符存储至第一环形队列,其中,指令描述符包括关于一个子指令包的存储地址、大小、开始标识和结束标识的记录。
可选地,附图5示例的加解密模块505可以包括获取单元、第一读取单元和加解密单元,其中:
获取单元,用于获取读指令指示器,其中,读指令指示器用于对下一个将要从第一环形队列读取的指令描述符进行指示;
第一读取单元,用于当读指令指示器的值与写指令指示器的值不相等时,根据读指令指示器的指示,从第一环形队列读取n个子指令包中一个子指令包对应的指令描述符;
加解密单元,用于按照从第一环形队列读取n个子指令包中一个子指令包对应的指令描述符中的记录,对指令描述符对应的子指令包进行加密。
可选地,上述实施例的加解密单元可以包括判断单元和调度单元,其中:
判断单元,用于判断第一环形队列是否为空;
调度单元,用于若第一环形队列不为空,则以轮询方式调度多个加解密单元中任意一个空闲的加解密单元对指令描述符对应的子指令包进行加密。
可选地,图5示例的缓存模块506具体用于以共享加解密引擎内部IP核提供的内存方式,缓存每个子指令包的中间加密结果。
可选地,图5示例的结果输出模块507可以包括查询单元、确定单元和返回单元,其中:
查询单元,用于查询第二环形队列,所述第二环形队列用于存储状态描述符;
确定单元,用于若第二环形队列为空,则确定完成n个子指令包的加密;
返回单元,用于将n个子指令包中最后一个子指令包的加密结果作为主指令包的完整加密结果返回给主机501。
从以上图5示例的数据加密装置可知,由于被主机拆分成的n个子指令包被加解密引擎加密后,加解密引擎以共享其内部IP核提供的内存的方式,对每个子指令包的加密结果予以缓存后,将主指令包的完整加密结果后返回至主机,即加解密引擎利用其内部的内存资源缓存每个子指令包的中间加密结果,而无需由主机每次获得一个子指令包的中间结果,从而节省了主机CPU的资源,提升了数据处理的整体性能。
图6是本申请一实施例提供的设备的结构示意图。如图6所示,该实施例的设备3主要包括:处理器60、存储器61以及存储在存储器61中并可在处理器60上运行的计算机程序62,例如数据加密方法的程序。处理器60执行计算机程序62时实现上述数据加密方法实施例中的步骤,例如图1所示的步骤S101至S107。或者,处理器60执行计算机程序62时实现上述各装置实施例中各模块/单元的功能,例如图5所示指令拆分模块503、进度控制模块504、加解密模块505、缓存模块506和结果输出模块507的功能。
示例性地,数据加密方法的计算机程序62主要包括:主机将主指令包拆分为n个子指令包后发送至加解密引擎,其中,n为大于或等于2的整数;主机控制n个子指令包中每个子指令包被加解密引擎执行加密的进度;在主机对每个子指令包加密进行进度的控制下,加解密引擎对每个子指令包执行加密;加解密引擎将首次加密结果缓存至加解密引擎内部IP核提供的内存,其中,首次加密结果为加解密引擎从加解密引擎内部IP核提供的内存读取加密参数后对n个子指令包的首子指令包进行加密得到的结果;对于首子指令包的后续各个子指令包,均读取前一个子指令包的加密结果,以用于对当前子指令包进行加密;将当前子指令包的加密结果缓存至加解密引擎内部IP核提供的内存,以供后续子指令包进行加密使用;当完成n个子指令包的加密后,加解密引擎将主指令包的完整加密结果返回至主机。计算机程序62可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器61中,并由处理器60执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序62在设备6中的执行过程。例如,计算机程序62可以被分割成指令拆分模块503、进度控制模块504、加解密模块505、缓存模块506和结果输出模块507(虚拟装置中的模块)的功能,各模块具体功能如下:进度控制模块504,用于控制n个子指令包中每个子指令包被加解密引擎502执行加密的进度;加解密模块505,用于在主机501对每个子指令包加密进行进度的控制下,对每个子指令包执行加密;缓存模块506,用于将首次加密结果缓存至加解密引擎内部IP核提供的内存,对于首子指令包的后续各个子指令包,均从加解密引擎内部IP核提供的内存读取前一个子指令包的加密结果,以用于对当前子指令包进行加密,将当前子指令包的加密结果缓存至所述加解密引擎内部IP核提供的内存,以供后续子指令包进行加密使用,其中,首次加密结果为加解密引擎从所述加解密引擎内部IP核提供的内存读取加密参数后对n个子指令包的首子指令包进行加密得到的结果;结果输出模块507,用于当完成n个子指令包的加密后,将主指令包的完整加密结果返回至主机501。
设备6可包括但不仅限于处理器60、存储器61。本领域技术人员可以理解,图6仅仅是设备6的示例,并不构成对设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器60可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器61可以是设备6的内部存储单元,例如设备6的硬盘或内存。存储器61也可以是设备6的外部存储设备,例如设备6上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器61还可以既包括设备6的内部存储单元也包括外部存储设备。存储器61用于存储计算机程序以及设备所需的其他程序和数据。存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即,将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非临时性计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,数据加密方法的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤,即,主机将主指令包拆分为n个子指令包后发送至加解密引擎,其中,n为大于或等于2的整数;主机控制n个子指令包中每个子指令包被加解密引擎执行加密的进度;在主机对每个子指令包加密进行进度的控制下,加解密引擎对每个子指令包执行加密;加解密引擎将首次加密结果缓存至加解密引擎内部IP核提供的内存,其中,首次加密结果为加解密引擎从加解密引擎内部IP核提供的内存读取加密参数后对n个子指令包的首子指令包进行加密得到的结果;对于首子指令包的后续各个子指令包,均读取前一个子指令包的加密结果,以用于对当前子指令包进行加密;将当前子指令包的加密结果缓存至加解密引擎内部IP核提供的内存,以供后续子指令包进行加密使用;当完成n个子指令包的加密后,加解密引擎将主指令包的完整加密结果返回至主机。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。非临时性计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读内存(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,非临时性计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,非临时性计算机可读介质不包括电载波信号和电信信号。以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种数据加密方法,其特征在于,所述方法包括:
主机将主指令包拆分为n个子指令包后发送至加解密引擎,所述n为大于或等于2的整数;
所述主机控制所述n个子指令包中每个子指令包被所述加解密引擎执行加密的进度;
在所述主机对每个子指令包加密进行进度的控制下,所述加解密引擎对所述每个子指令包执行加密;
所述加解密引擎将首次加密结果缓存至加解密引擎内部IP核提供的内存,所述首次加密结果为所述加解密引擎从所述加解密引擎内部IP核提供的内存读取加密参数后对所述n个子指令包的首子指令包进行加密得到的结果,所述首子指令包为从所述主指令包拆分下来且第一个包含主指令包的净荷部分的子指令包;
对于所述首子指令包的后续各个子指令包,所述加解密引擎均从所述加解密引擎内部IP核提供的内存读取前一个子指令包的加密结果,以用于对当前子指令包进行加密;所述加解密引擎内部IP核提供的内存中的加密结果被读取后,所述加解密引擎内部IP核提供的内存处于空闲状态;
所述加解密引擎将所述当前子指令包的加密结果缓存至所述加解密引擎内部IP核提供的内存,以供后续子指令包进行加密使用;
当完成所述n个子指令包的加密后,所述加解密引擎将所述主指令包的完整加密结果返回至所述主机,所述主指令包的完整加密结果为所述n个子指令包中最后一个子指令包的加密结果;
所述主机将主指令包拆分为n个子指令包,包括:
对所述主指令包中的前置附加域进行拆分,若所述前置附加域大于M个字节,则从所述前置附加域拆分出M个字节作为一个子指令包,所述M为大于1的自然数;
若所述前置附加域不足M个字节或所述前置附加域被拆分出M个字节后剩余部分不足M个字节,则从所述主指令包中的净荷域紧挨在所述前置附加域最后一个字节的部分拆分出M个字节,将所述从净荷域拆分出的M个字节与所述前置附加域或所述前置附加域的剩余部分一起组成一个子指令包;
对所述净荷域进行拆分,若所述净荷域大于M个字节,则从所述净荷域拆分出M个字节作为一个子指令包;
若所述净荷域不足M个字节或所述净荷域被拆分出M个字节后剩余部分不足M个字节,则将所述主指令包中的后置附加域与所述净荷域或所述净荷域的剩余部分一起组成一个子指令包。
2.如权利要求1所述的数据加密方法,其特征在于,所述主机将主指令包拆分为n个子指令包后发送至加解密引擎,包括:
按照先发送包含所述前置附加域的子指令包、再发送包含所述净荷域的子指令包、最后发送包含所述后置附加域的子指令包的顺序,将所述n个子指令包一次性发送至所述加解密引擎。
3.如权利要求1所述的数据加密方法,其特征在于,所述主机控制所述n个子指令包中每个子指令包被所述加解密引擎执行加密的进度,包括:
生成写指令指示器,所述写指令指示器用于对下一个将要写入第一环形队列的指令描述符进行指示,一个所述指令描述符对应于所述n个子指令包中一个子指令包;
根据所述写指令指示器的指示,将所述n个子指令包中每一个子指令包对应的指令描述符存储至所述第一环形队列,所述指令描述符包括关于一个子指令包的存储地址、大小、开始标识和结束标识的记录。
4.如权利要求3所述的数据加密方法,其特征在于,所述在所述主机对每个子指令包加密进行进度的控制下,所述加解密引擎对所述每个子指令包执行加密,包括:
获取读指令指示器,所述读指令指示器用于对下一个将要从所述第一环形队列读取的指令描述符进行指示;
当所述读指令指示器的值与所述写指令指示器的值不相等时,根据所述读指令指示器的指示,从所述第一环形队列读取所述n个子指令包中一个子指令包对应的指令描述符;
按照所述从所述第一环形队列读取所述n个子指令包中一个子指令包对应的指令描述符中的记录,对所述指令描述符对应的子指令包进行加密。
5.如权利要求4所述的数据加密方法,其特征在于,所述按照所述从所述第一环形队列读取所述n个子指令包中一个子指令包对应的指令描述符中的记录,对所述指令描述符对应的子指令包进行加密,包括:
判断所述第一环形队列是否为空;
若所述第一环形队列不为空,则以轮询方式调度多个加解密单元中任意一个空闲的加解密单元对指令描述符对应的子指令包进行加密。
6.如权利要求1所述的数据加密方法,其特征在于,所述当完成所述n个子指令包的加密后,所述加解密引擎将所述主指令包的完整加密结果返回至所述主机,包括:
查询第二环形队列,所述第二环形队列用于存储状态描述符;
若所述第二环形队列为空,则确定完成所述n个子指令包的加密;
将所述n个子指令包中最后一个子指令包的加密结果作为所述主指令包的完整加密结果返回给所述主机。
7.一种数据加密装置,其特征在于,所述装置包括主机和加解密引擎,所述主机包括指令拆分模块和进度控制模块,所述加解密引擎包括加解密模块、缓存模块和结果输出模块;
所述指令拆分模块,用于将主指令包拆分为n个子指令包后发送至加解密引擎,所述n为大于或等于2的整数;
所述进度控制模块,用于控制所述n个子指令包中每个子指令包被所述加解密引擎执行加密的进度;
所述加解密模块,用于在所述主机对每个子指令包加密进行进度的控制下,对所述每个子指令包执行加密;
所述缓存模块,用于将首次加密结果缓存至加解密引擎内部IP核提供的内存,对于首子指令包的后续各个子指令包,均从所述加解密引擎内部IP核提供的内存读取前一个子指令包的加密结果,以用于对当前子指令包进行加密,所述加解密引擎内部IP核提供的内存中的加密结果被读取后,所述加解密引擎内部IP核提供的内存处于空闲状态;将所述当前子指令包的加密结果缓存至所述加解密引擎内部IP核提供的内存,以供后续子指令包进行加密使用,所述首次加密结果为所述加解密引擎从所述加解密引擎内部IP核提供的内存读取加密参数后对所述n个子指令包的首子指令包进行加密得到的结果,所述首子指令包为从所述主指令包拆分下来且第一个包含主指令包的净荷部分的子指令包;
所述结果输出模块,用于当完成所述n个子指令包的加密后,将所述主指令包的完整加密结果返回至所述主机,所述主指令包的完整加密结果为所述n个子指令包中最后一个子指令包的加密结果;
所述指令拆分模块还用于:
对所述主指令包中的前置附加域进行拆分,若所述前置附加域大于M个字节,则从所述前置附加域拆分出M个字节作为一个子指令包,所述M为大于1的自然数;
若所述前置附加域不足M个字节或所述前置附加域被拆分出M个字节后剩余部分不足M个字节,则从所述主指令包中的净荷域紧挨在所述前置附加域最后一个字节的部分拆分出M个字节,将所述从净荷域拆分出的M个字节与所述前置附加域或所述前置附加域的剩余部分一起组成一个子指令包;
对所述净荷域进行拆分,若所述净荷域大于M个字节,则从所述净荷域拆分出M个字节作为一个子指令包;
若所述净荷域不足M个字节或所述净荷域被拆分出M个字节后剩余部分不足M个字节,则将所述主指令包中的后置附加域与所述净荷域或所述净荷域的剩余部分一起组成一个子指令包。
8.一种设备,所述设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任意一项所述方法的步骤。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任意一项所述方法的步骤。
CN202011219232.8A 2020-11-04 2020-11-04 一种数据加密方法、装置、设备和计算机可读存储介质 Active CN112035866B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011219232.8A CN112035866B (zh) 2020-11-04 2020-11-04 一种数据加密方法、装置、设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011219232.8A CN112035866B (zh) 2020-11-04 2020-11-04 一种数据加密方法、装置、设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN112035866A CN112035866A (zh) 2020-12-04
CN112035866B true CN112035866B (zh) 2021-07-23

Family

ID=73573160

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011219232.8A Active CN112035866B (zh) 2020-11-04 2020-11-04 一种数据加密方法、装置、设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN112035866B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115495767B (zh) * 2022-11-04 2023-03-14 湖北芯擎科技有限公司 虚拟会话方法、装置、电子设备及计算机可读存储介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1602508A (zh) * 2002-10-04 2005-03-30 索尼株式会社 分组加密/解密的方法、电路及设备
JP2008301204A (ja) * 2007-05-31 2008-12-11 Toshiba Corp 再生装置及び再生方法
CN100542085C (zh) * 2003-11-10 2009-09-16 美国博通公司 保密可执行编码的系统和方法
CN104951688A (zh) * 2014-03-24 2015-09-30 国家计算机网络与信息安全管理中心 适用于Xen虚拟化环境下的专用数据加密方法及加密卡
CN106533652A (zh) * 2015-09-15 2017-03-22 中兴通讯股份有限公司 一种基于xts-sm4的存储加解密方法及装置
CN106788975A (zh) * 2016-12-28 2017-05-31 北京天融信网络安全技术有限公司 基于sm4密码算法的加解密装置
CN107015940A (zh) * 2015-11-12 2017-08-04 三星电子株式会社 包含由多处理器共享的存储器的多处理器系统及其方法
CN109379177A (zh) * 2018-12-26 2019-02-22 济南浪潮高新科技投资发展有限公司 一种同态密文计算加速逻辑系统及实现方法
CN109670320A (zh) * 2017-10-13 2019-04-23 三星电子株式会社 加密设备和解密设备、以及其操作方法
CN110266725A (zh) * 2019-07-08 2019-09-20 何荣宝 密码安全隔离模块及移动办公安全系统
CN110909371A (zh) * 2019-11-21 2020-03-24 广东美的厨房电器制造有限公司 一种数据加密方法、电子设备及介质
CN111263942A (zh) * 2017-10-23 2020-06-09 三星电子株式会社 数据加密方法和执行数据加密方法的电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10216935B2 (en) * 2017-06-13 2019-02-26 Intersections Inc. Mobile device resistant to malware
CN107566113A (zh) * 2017-09-29 2018-01-09 郑州云海信息技术有限公司 3des对称加解密方法、系统及计算机可读存储介质

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1602508A (zh) * 2002-10-04 2005-03-30 索尼株式会社 分组加密/解密的方法、电路及设备
CN100542085C (zh) * 2003-11-10 2009-09-16 美国博通公司 保密可执行编码的系统和方法
JP2008301204A (ja) * 2007-05-31 2008-12-11 Toshiba Corp 再生装置及び再生方法
CN104951688A (zh) * 2014-03-24 2015-09-30 国家计算机网络与信息安全管理中心 适用于Xen虚拟化环境下的专用数据加密方法及加密卡
CN106533652A (zh) * 2015-09-15 2017-03-22 中兴通讯股份有限公司 一种基于xts-sm4的存储加解密方法及装置
CN107015940A (zh) * 2015-11-12 2017-08-04 三星电子株式会社 包含由多处理器共享的存储器的多处理器系统及其方法
CN106788975A (zh) * 2016-12-28 2017-05-31 北京天融信网络安全技术有限公司 基于sm4密码算法的加解密装置
CN109670320A (zh) * 2017-10-13 2019-04-23 三星电子株式会社 加密设备和解密设备、以及其操作方法
CN111263942A (zh) * 2017-10-23 2020-06-09 三星电子株式会社 数据加密方法和执行数据加密方法的电子设备
CN109379177A (zh) * 2018-12-26 2019-02-22 济南浪潮高新科技投资发展有限公司 一种同态密文计算加速逻辑系统及实现方法
CN110266725A (zh) * 2019-07-08 2019-09-20 何荣宝 密码安全隔离模块及移动办公安全系统
CN110909371A (zh) * 2019-11-21 2020-03-24 广东美的厨房电器制造有限公司 一种数据加密方法、电子设备及介质

Also Published As

Publication number Publication date
CN112035866A (zh) 2020-12-04

Similar Documents

Publication Publication Date Title
US8413153B2 (en) Methods and systems for sharing common job information
US7392399B2 (en) Methods and systems for efficiently integrating a cryptographic co-processor
US8566485B2 (en) Data transformation during direct memory access
US8918646B2 (en) Data processing apparatus
WO2019092593A1 (en) Nic with programmable pipeline
EP4000214A1 (en) Cryptographic architecture for cryptographic permutation
JP6222802B2 (ja) ランダム値生成方法およびシステム
CN105531713A (zh) 从单个数据缓冲器生成多个安全散列
US20070074091A1 (en) Checksum calculation
WO2017045484A1 (zh) 一种基于xts-sm4的存储加解密方法及装置
KR20090058499A (ko) 고성능 본딩 리시퀀싱을 위한 방법, 시스템 및 컴퓨터 제품
US10536264B2 (en) Efficient cryptographically secure control flow integrity protection
TW202242693A (zh) 用於總儲存加密之系統、方法及設備
CN107622207B (zh) 加密系统级数据结构
CN115208701B (zh) 数据包选择加密方法及装置
WO2017015002A1 (en) Methods for multi-source configuration of mobile applications
CN112035866B (zh) 一种数据加密方法、装置、设备和计算机可读存储介质
CN115577397B (zh) 数据处理方法、装置、设备及存储介质
US9092283B2 (en) Systems with multiple port random number generators and methods of their operation
CN113127901B (zh) 一种数据加密传输的处理方法、装置及芯片
US20220019700A1 (en) Multiple Key Management
CN111143897B (zh) 数据安全处理装置、系统及处理方法
CN118264392A (zh) 密码学引擎的调度电路、方法、终端设备和芯片
WO2019105276A1 (zh) 数据访问方法、存储器及处理器
CN115037511A (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