一种数据压缩方法、装置及电子设备和存储介质

文档序号:321765 发布日期:2021-11-30 浏览:40次 >En<

阅读说明:本技术 一种数据压缩方法、装置及电子设备和存储介质 (Data compression method and device, electronic equipment and storage medium ) 是由 孙旭 于 2021-07-23 设计创作,主要内容包括:本申请公开了一种数据压缩方法、装置及一种电子设备和计算机可读存储介质,该方法包括:确定压缩函数和本轮压缩的各寄存器初值;基于所述各寄存器初值执行所述压缩函数,在执行过程中利用旁路进位加法器计算所述压缩函数中的加法运算,得到所述本轮压缩完成后各寄存器的值。由此可见,本申请提供的数据压缩方法,通过进位旁路加法器实现压缩函数中的加法运算,提高了压缩函数的计算效率。在硬件实现时达到缩短关键路径,提高算法整体性能的作用。(The application discloses a data compression method, a data compression device, an electronic device and a computer readable storage medium, wherein the method comprises the following steps: determining a compression function and initial values of registers of the current round of compression; and executing the compression function based on the initial values of the registers, and calculating addition operation in the compression function by using a bypass carry adder in the executing process to obtain the value of each register after the current round of compression is finished. Therefore, the data compression method provided by the application realizes the addition operation in the compression function through the carry bypass adder, and improves the calculation efficiency of the compression function. The method achieves the effects of shortening the key path and improving the overall performance of the algorithm in the hardware implementation.)

一种数据压缩方法、装置及电子设备和存储介质

技术领域

本申请涉及数据处理技术领域,更具体地说,涉及一种数据压缩方法、装置及一种电子设备和一种计算机可读存储介质。

背景技术

随着信息技术和计算机技术的发展和广泛应用,人们对信息数据的可信度要求也越来越高。在高速密码芯片中,密码杂凑算法(CryptographicHashAlgorithm,缩写:SM3)密码杂凑算法已经越来越多的用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成。

SM3算法作为我国自主要发设计的密码杂凑算法,输出消息摘要值长度为256bit,消息分组长度512bit,迭代压缩次数64次。在算法的硬件实现中,数据一般需要经过消息分组和填充、扩展生成消息字和64轮函数迭代压缩等过程,其中函数迭代压缩过程计算复杂,资源消耗最多,耗时也最多。

因此,如何提高压缩函数的计算效率是本领域技术人员需要解决的技术问题。

发明内容

本申请的目的在于提供一种数据压缩方法、装置及一种电子设备和一种计算机可读存储介质,提高了压缩函数的计算效率。

为实现上述目的,本申请提供了一种数据压缩方法,包括:

确定压缩函数和本轮压缩的各寄存器初值;

基于所述各寄存器初值执行所述压缩函数,在执行过程中利用旁路进位加法器计算所述压缩函数中的加法运算,得到所述本轮压缩完成后各寄存器的值。

其中,所述压缩函数为SM3算法压缩函数,所述旁路进位加法器为两输入一输出的32bit旁路进位加法器。

其中,所述32bit旁路进位加法器包括8组级联的4bit旁路进位加法器。

其中,所述各寄存器初值为上一轮压缩完成后各寄存器的值或各寄存器的初始值。

其中,还包括:

获取待压缩数据,按照预设规则对所述待压缩数据进行填充分组和分组扩展,以计算所述压缩函数需要的消息字,并生成各寄存器的初始值。

其中,所述利用旁路进位加法器计算所述压缩函数中的加法运算,得到所述本轮压缩完成后各寄存器的值,包括:

利用旁路进位加法器计算所述压缩函数中主关键路径的加法运算,得到所述本轮压缩完成后所述主关键路径对应的寄存器的值。

其中,所述寄存器包括第一寄存器、第二寄存器、第三寄存器、第四寄存器和第五寄存器,所述主关键路径对应的寄存器为所述第二寄存器;

所述利用旁路进位加法器计算所述压缩函数中主关键路径的加法运算,得到所述本轮压缩完成后所述主关键路径对应的寄存器的值,包括:

利用第一旁路进位加法器计算所述第一寄存器的初值左移12位后与所述第二寄存器的初值的和,得到第一求和结果;

利用第二旁路进位加法器计算预设常数左移预设位数后与所述第一求和结果的和,得到第二求和结果;

对所述第二寄存器的初值、所述第三寄存器的初值、所述第四寄存器的初值进行布尔函数处理,得到布尔函数处理结果;

利用第三旁路进位加法器计算所述布尔函数处理结果与所述第五寄存器的初值的和,得到第三求和结果;

利用第四旁路进位加法器计算所述消息字与所述第三求和结果的和,得到第四求和结果;

利用第五旁路进位加法器计算所述第二求和结果左移7位后与所述第四求和结果的和,得到第五求和结果;

对所述第五求和结果进行置换运算得到所述本轮压缩完成后所述第二寄存器的值。

为实现上述目的,本申请提供了一种数据压缩装置,包括:

确定模块,用于确定压缩函数和本轮压缩的各寄存器初值;

执行模块,用于基于所述各寄存器初值执行所述压缩函数,在执行过程中利用旁路进位加法器计算所述压缩函数中的加法运算,得到所述本轮压缩完成后各寄存器的值。

为实现上述目的,本申请提供了一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述数据压缩方法的步骤。

为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述数据压缩方法的步骤。

通过以上方案可知,本申请提供的一种数据压缩方法,包括:确定压缩函数和本轮压缩的各寄存器初值;基于所述各寄存器初值执行所述压缩函数,在执行过程中利用旁路进位加法器计算所述压缩函数中的加法运算,得到所述本轮压缩完成后各寄存器的值。

由此可见,本申请提供的数据压缩方法,通过进位旁路加法器(Carry SkipAdder,CSA)实现压缩函数中的加法运算,提高了压缩函数的计算效率。在硬件实现时达到缩短关键路径,提高算法整体性能的作用。本申请还公开了一种数据压缩装置及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的

具体实施方式

一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1为根据一示例性实施例示出的一种数据压缩方法的流程图;

图2为根据一示例性实施例示出的一种SM3算法的框架图;

图3为根据一示例性实施例示出的SM3算法中单轮压缩函数的示意图;

图4为根据一示例性实施例示出的主关键路径的计算过程示意图;

图5为根据一示例性实施例示出的一种32bit旁路进位加法器的结构图;

图6为根据一示例性实施例示出的一种4bit旁路进位加法器的结构图;

图7为根据一示例性实施例示出的一种数据压缩装置的结构图;

图8为根据一示例性实施例示出的一种电子设备的结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。另外,在本申请实施例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

本申请实施例公开了一种数据压缩方法,提高了压缩函数的计算效率。

参见图1,根据一示例性实施例示出的一种数据压缩方法的流程图,如图1所示,包括:

S101:确定压缩函数和本轮压缩的各寄存器初值;

在本实施例中,压缩函数可以具体为SM3算法压缩函数。对于SM3算法,具体的接口信号说明如表1所示:

表1

作为一种可行的实施方式,本实施例还包括:获取待压缩数据,按照预设规则对所述待压缩数据进行填充分组和分组扩展,以计算所述压缩函数需要的消息字,并生成各寄存器的初始值。

SM3算法的框架图如图2所示,在具体实施中,首先对明文的待压缩数据进行填充分组,即将输入的明文的待压缩数据按照规则填充,并分成512bit一组。在接收到端口的有效数据后,将其同时缓存到8个相同的32bit位宽,深度为64的双口RAM中,记为RAM_A、RAM_B、RAM_C、RAM_D、RAM_E、RAM_F、RAM_G和RAM_H。当接收完一组512bit的数据时,仍然没有收到Data_in_last信号,说明此数据组个数多余512bit,不需要做填充处理。当没有接收完一组512bit数据即存在Data_in_last时,此时需要做填充处理,首先将比特“1”添加到消息的末尾,再添加“0”直到达到512bit。

其次进行分组扩展,即生成压缩函数中需要的消息字Wj和Wj’,并将其送入到指定位置。由于在后续压缩函数的迭代计算中需要使用消息字参与计算,为降低迭代压缩的操作时间,需要提前生成消息字。在填充分组过程中,512bit数据已经按照32bit位宽写入了16组数据,记为W0-W15,分组扩展的目的即为计算产生其他的116组数据。

Wj的计算公式为:Wj=P1(Wj-16⊕Wj-9⊕(Wj-3<<15))⊕(Wj-13<<7)⊕Wj-6,其中,通过RAM将各组数据同时读出,具体的通过RAM_A将Wj-16读出,RAM_B将Wj-9读出,RAM_C将Wj-3读出,RAM_D将Wj-13读出,RAM_E将Wj-6读出。读出后的数据根据算法的计算公式进行相应的循环移位和异或操作,进而计算Wj并将其写入RAM中。

Wj’的计算公式为:Wj’=Wj⊕Wj+4,其中,通过RAM_F将Wj读出,RAM_G将Wj+4读出,按照公式进行按位异或操作,并将计算结果写回RAM_G。

在SM3算法的迭代压缩过程中,各寄存器初值包括上一轮压缩完成后各寄存器的值或各寄存器的初始值,单轮压缩函数如图3所示,寄存器包括A、B、C、D、E、F、G和H。

S102:基于所述各寄存器初值执行所述压缩函数,在执行过程中利用旁路进位加法器计算所述压缩函数中的加法运算,得到所述本轮压缩完成后各寄存器的值。

在本步骤中,基于各寄存器初值执行本轮压缩的压缩函数,在执行过程中利用旁路进位加法器计算加法运算,进位旁路加法器的思想在于加速进位链的传播,在某种情况下,到达第i位的进位无需等待第i-1位进位,提高了计算效率。

作为一种优选实施方式,所述利用旁路进位加法器计算所述压缩函数中的加法运算,得到所述本轮压缩完成后各寄存器的值,包括:利用旁路进位加法器计算所述压缩函数中主关键路径的加法运算,得到所述本轮压缩完成后所述主关键路径对应的寄存器的值。可以理解的是,利用旁路进位加法器计算主关键路径的加法运算,有利于提高主关键路径的计算效率。对于SM3算法来说,寄存器E’的计算路径为主关键路径。

进一步的,所述寄存器包括第一寄存器、第二寄存器、第三寄存器、第四寄存器和第五寄存器,第一寄存器对应图3中的A,第二寄存器对应图3中的E,第三寄存器对应图3中的F,第四寄存器对应图3中的G,第五寄存器对应图3中的H,所述主关键路径对应的寄存器为所述第二寄存器,即图3中的E’。主关键路径的计算过程如图4所示,公式为:

SS1=((A<<12)+E+(Tj<<j))<<7

TT2=GGj(E;F;G)+H+SS1+Wj

E’=P0(TT2)

也即,所述利用旁路进位加法器计算所述压缩函数中主关键路径的加法运算,得到所述本轮压缩完成后所述主关键路径对应的寄存器的值,包括:利用第一旁路进位加法器计算所述第一寄存器的初值左移12位后与所述第二寄存器的初值的和,得到第一求和结果;利用第二旁路进位加法器计算预设常数左移预设位数后与所述第一求和结果的和,得到第二求和结果;对所述第二寄存器的初值、所述第三寄存器的初值、所述第四寄存器的初值进行布尔函数处理,得到布尔函数处理结果;利用第三旁路进位加法器计算所述布尔函数处理结果与所述第五寄存器的初值的和,得到第三求和结果;利用第四旁路进位加法器计算所述消息字与所述第三求和结果的和,得到第四求和结果;利用第五旁路进位加法器计算所述第二求和结果左移7位后与所述第四求和结果的和,得到第五求和结果;对所述第五求和结果进行置换运算得到所述本轮压缩完成后所述第二寄存器的值。

在上式中,GGj()为布尔函数,Tj为预设常数,j为预设位数,P0()为置换函数,Wj为消息字。

通过图4可知,上述的第一旁路进位加法器、第二旁路进位加法器、第三旁路进位加法器、第四旁路进位加法器和第五旁路进位加法器均为两输入一输出的32bit旁路进位加法器。上述计算方式将主关键路径的计算过程分解为两组并行计算,即第一旁路进位加法器和第二旁路进位加法器为一组,第三旁路进位加法器和第四旁路进位加法器为另一组,两组并行计算提高了主关键路径的计算效率。

图5为32bit旁路进位加法器的结构图,可见在32bit旁路进位加法器中,最长的进位链为c0->c1->c2->…->c32,也就是说,每一位全加器都有进位,这条路径也是最长的关键路径。

在SM3算法中,所有涉及的加法运算都是32bit的数据加运算,因此需要实现32bit-CSA,可以使用8组4bit旁路进位加法器级联的方式生成,使用这种方法可以降低设计难度,优化时序。图6为4bit旁路进位加法器的结构图,可见4bit旁路进位加法器相比于传统的全加器,通过加入旁路逻辑来缩短这条最长路径,该旁路逻辑由2选1数据选择器,第4级进位和第0级进位和进位bypass信号组成。其中bypass=A0^B0&A1^B1&A2^B2&A3^B3,当bypass信号为1时,c4=c0,此时第4级进位不需要等待前面4级全加器的计算结果,直接将c0的值赋给c4,简化了计算过程,优化了时序。

由此可见,本申请实施例提供的数据压缩方法,通过进位旁路加法器实现压缩函数中的加法运算,提高了压缩函数的计算效率。在硬件实现时达到缩短关键路径,提高算法整体性能的作用。

下面对本申请实施例提供的一种数据压缩装置进行介绍,下文描述的一种数据压缩装置与上文描述的一种数据压缩方法可以相互参照。

参见图7,根据一示例性实施例示出的一种数据压缩装置的结构图,如图7所示,包括:

确定模块701,用于确定压缩函数和本轮压缩的各寄存器初值;

执行模块702,用于基于所述各寄存器初值执行所述压缩函数,在执行过程中利用旁路进位加法器计算所述压缩函数中的加法运算,得到所述本轮压缩完成后各寄存器的值。

由此可见,本申请实施例提供的数据压缩装置,通过进位旁路加法器实现压缩函数中的加法运算,提高了压缩函数的计算效率。在硬件实现时达到缩短关键路径,提高算法整体性能的作用。

在上述实施例的基础上,作为一种优选实施方式,所述压缩函数为SM3算法压缩函数,所述旁路进位加法器为两输入一输出的32bit旁路进位加法器。

在上述实施例的基础上,作为一种优选实施方式,所述32bit旁路进位加法器包括8组级联的4bit旁路进位加法器。

在上述实施例的基础上,作为一种优选实施方式,所述各寄存器初值为上一轮压缩完成后各寄存器的值或各寄存器的初始值。

在上述实施例的基础上,作为一种优选实施方式,还包括:

生成模块,用于获取待压缩数据,按照预设规则对所述待压缩数据进行填充分组和分组扩展,以计算所述压缩函数需要的消息字,并生成各寄存器的初始值。

在上述实施例的基础上,作为一种优选实施方式,所述执行模块702具体为基于所述各寄存器初值执行所述压缩函数,在执行过程中利用旁路进位加法器计算所述压缩函数中主关键路径的加法运算,得到所述本轮压缩完成后所述主关键路径对应的寄存器的值的模块。

在上述实施例的基础上,作为一种优选实施方式,所述寄存器包括第一寄存器、第二寄存器、第三寄存器、第四寄存器和第五寄存器,所述主关键路径对应的寄存器为所述第二寄存器;

所述执行模块702包括:

第一求和单元,用于利用第一旁路进位加法器计算所述第一寄存器的初值左移12位后与所述第二寄存器的初值的和,得到第一求和结果;

第二求和单元,用于利用第二旁路进位加法器计算预设常数左移预设位数后与所述第一求和结果的和,得到第二求和结果;

处理单元,用于对所述第二寄存器的初值、所述第三寄存器的初值、所述第四寄存器的初值进行布尔函数处理,得到布尔函数处理结果;

第三求和单元,用于利用第三旁路进位加法器计算所述布尔函数处理结果与所述第五寄存器的初值的和,得到第三求和结果;

第四求和单元,用于利用第四旁路进位加法器计算所述消息字与所述第三求和结果的和,得到第四求和结果;

第五求和单元,用于利用第五旁路进位加法器计算所述第二求和结果左移7位后与所述第四求和结果的和,得到第五求和结果;

置换单元,用于对所述第五求和结果进行置换运算得到所述本轮压缩完成后所述第二寄存器的值。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

基于上述程序模块的硬件实现,且为了实现本申请实施例的方法,本申请实施例还提供了一种电子设备,图8为根据一示例性实施例示出的一种电子设备的结构图,如图8所示,电子设备包括:

通信接口1,能够与其它设备比如网络设备等进行信息交互;

处理器2,与通信接口1连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的数据压缩方法。而所述计算机程序存储在存储器3上。

当然,实际应用时,电子设备中的各个组件通过总线系统4耦合在一起。可理解,总线系统4用于实现这些组件之间的连接通信。总线系统4除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图8中将各种总线都标为总线系统4。

本申请实施例中的存储器3用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。

可以理解,存储器3可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器2旨在包括但不限于这些和任意其它适合类型的存储器。

上述本申请实施例揭示的方法可以应用于处理器2中,或者由处理器2实现。处理器2可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器2中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器2可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器2可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器3,处理器2读取存储器3中的程序,结合其硬件完成前述方法的步骤。

处理器2执行所述程序时实现本申请实施例的各个方法中的相应流程,为了简洁,在此不再赘述。

在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器3,上述计算机程序可由处理器2执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:指令执行方法和指令执行装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!