首页> 中国专利> 基于RISC-V架构的SHA3算法实现方法及装置

基于RISC-V架构的SHA3算法实现方法及装置

摘要

本发明公开了一种基于RISC‑V架构的SHA3算法实现方法、装置及系统,应用于计算机技术领域,包括:根据目标函数确定出有效长度和输出数据长度;根据输入信息、有效长度和输出数据长度,确定出吸收阶段的填充过程总数和压缩阶段的压缩过程总数;在吸收阶段,根据第一初始状态向量、输入信息、有效长度和填充过程总数,逐个对每个填充过程进行计算,得到吸收阶段输出向量;在压缩阶段,基于吸收阶段输出向量逐个对每个压缩过程进行计算,得到压缩阶段输出向量;能够实现基于RISC‑V架构的SHA3算法的加速计算,有利于扩大RISC‑V架构的应用范围。

著录项

  • 公开/公告号CN114780144A

    专利类型发明专利

  • 公开/公告日2022-07-22

    原文格式PDF

  • 申请/专利号CN202210445323.6

  • 发明设计人 孔令军;庞兆春;林宁亚;王贤坤;

    申请日2022-04-26

  • 分类号G06F9/30;

  • 代理机构北京集佳知识产权代理有限公司;

  • 代理人马小青

  • 地址 250101 山东省济南市自由贸易试验区济南片区浪潮路1036号浪潮科技园S01楼35层

  • 入库时间 2023-06-19 16:06:26

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-22

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及计算机技术领域,特别是涉及一种基于RISC-V架构的SHA3算法实现方法、装置及系统。

背景技术

RISC-V指令集发布以来,已经有多种扩展指令集陆续公布,目前在密码学K指令集方面,仅有标量指令的相关研究,没有向量密码指令。另外,在密码学指令扩展中,即便是标量扩展,也没有可用于SHA3的扩展指令。也即,目前,无法在RISC-V架构上基于向量指令实现SHA3算法的加速计算,使RISC-V架构的应用受限。

鉴于此,如何提供一种基于RISC-V架构的SHA3算法实现方法、装置及系统成为本领域技术人员需要解决的问题。

发明内容

本发明实施例的目的是提供一种基于RISC-V架构的SHA3算法实现方法、装置及系统,在使用过程中实现基于RISC-V架构的SHA3算法的加速计算,有利于扩大RISC-V架构的应用范围。

为解决上述技术问题,本发明实施例提供了一种基于RISC-V架构的SHA3算法实现方法,包括:

根据目标函数确定出有效长度和输出数据长度;

根据输入信息、所述有效长度和所述输出数据长度,确定出吸收阶段的填充过程总数和压缩阶段的压缩过程总数;

在所述吸收阶段,根据第一初始状态向量、所述输入信息、所述有效长度和所述填充过程总数,逐个对每个所述填充过程进行计算,得到吸收阶段输出向量;

在所述压缩阶段,基于所述吸收阶段输出向量逐个对每个所述压缩过程进行计算,得到压缩阶段输出向量。

可选的,所述在所述吸收阶段,根据第一初始状态向量、所述输入信息、所述有效长度和所述填充过程总数,逐个对每个所述填充过程进行计算,得到吸收阶段输出向量,包括:

针对第i个填充过程,从所述输入信息中获取第i+1个长度为所述有效长度的第一向量;

将所述第一向量与当前状态向量进行异或操作,得到异或结果;

对所述异或结果进行f函数计算,得到第一输出向量;

判断所述第i个填充过程是否为最后一个填充过程,若是,则将所述第一输出向量作为吸收阶段输出向量,若否,则采用所述第一输出向量对所述当前状态向量进行更新;

对所述i进行加1操作,并返回执行所述从所述输入信息中获取第i+1个长度为所述有效长度的第一向量,直至最后一个填充过程结束后得到吸收阶段输出向量;其中,所述i为0时,所述当前状态向量为所述第一初始状态向量。

可选的,所述在所述压缩阶段,基于所述吸收阶段输出向量逐个对每个所述压缩过程进行计算,得到压缩阶段输出向量,包括:

针对当前压缩过程,对当前状态向量进行f函数操作,得到第二输出向量;

判断所述当前压缩过程是否为最后一个压缩过程,若是,则基于所述吸收阶段输出向量和各个第二输出向量得到压缩阶段输出向量;若否,则采用所述第二输出向量对所述当前状态向量进行更新,并返回执行所述对当前状态向量进行f函数操作的过程,直至最后一个压缩过程执行结束。

可选的,所述基于所述吸收阶段输出向量逐个对每个所述压缩过程进行计算,得到压缩阶段输出向量之前,还包括:

判断所述输出向量长度是否大于所述有效长度,若是,则执行所述基于所述吸收阶段输出向量逐个对每个所述压缩过程进行计算,得到压缩阶段输出向量的步骤;若否,则直接将所述吸收阶段输出向量的前所述输出向量长度个bit作为压缩阶段输出向量。

可选的,所述根据目标函数确定出有效长度和输出数据长度,包括:

根据目标函数从预先建立的函数参数配置表匹配出与所述目标函数对应的有效长度和输出数据长度。

本发明实施例还提供了一种基于RISC-V架构的SHA3算法实现装置,包括:

确定模块,用于根据目标函数确定出有效长度和输出数据长度;

计算模块,用于根据输入信息、所述有效长度和所述输出数据长度,确定出吸收阶段的填充过程总数和压缩阶段的压缩过程总数;

吸收处理模块,用于在所述吸收阶段,根据第一初始状态向量、所述输入信息、所述有效长度和所述填充过程总数,逐个对每个所述填充过程进行计算,得到吸收阶段输出向量;

压缩处理模块,用于在所述压缩阶段,基于所述吸收阶段输出向量逐个对每个所述压缩过程进行计算,得到压缩阶段输出向量。

可选的,所述吸收处理模块,包括:

第一获取单元,用于针对第i个填充过程,从所述输入信息中获取第i+1个长度为所述有效长度的第一向量;

异或单元,用于将所述第一向量与当前状态向量进行异或操作,得到异或结果;

计算单元,用于对所述异或结果进行f函数计算,得到第一输出向量;

第一判断单元,用于判断所述第i个填充过程是否为最后一个填充过程,若是,则触发第一确定单元,若否,则触发第一更新单元;

所述第一确定单元,用于将所述第一输出向量作为吸收阶段输出向量;

所述第一更新单元,用于采用所述第一输出向量对所述当前状态向量进行更新;

第二更新单元,用于对所述i进行加1操作,并触发所述获取模块,直至最后一个填充过程结束后得到吸收阶段输出向量;其中,所述i为0时,所述当前状态向量为所述第一初始状态向量。

可选的,所述压缩处理模块,包括:

f函数计算单元,用于针对当前压缩过程,对当前状态向量进行f函数操作,得到第二输出向量;

第二判断单元,用于判断所述当前压缩过程是否为最后一个压缩过程,若是,则触发第二确定单元,若否,则触发第三更新单元;

所述第二确定单元,用于基于所述吸收阶段输出向量和所述第二输出向量得到压缩阶段输出向量;

所述第三更新单元,用于采用所述第二输出向量对所述当前状态向量进行更新,并触发所述f函数计算单元,直至最后一个压缩过程执行结束。

本发明实施例还提供了一种基于RISC-V架构的SHA3算法实现系统,包括:存储器和处理器,其中:

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

所述处理器,用于执行所述计算机程序时实现如权利要求1所述基于RISC-V架构的SHA3算法实现方法的步骤。

可选的,所述处理器包括处理模块、寄存器模块、、向量移位器、向量异或器和f函数计算模块,其中:

所述寄存器模块,用于存储输入信息和状态向量;

所述处理模块,用于目标函数确定出有效长度和输出数据长度,根据输入信息、所述有效长度和所述输出数据长度,确定出吸收阶段的填充过程总数和压缩阶段的压缩过程总数;用于在所述吸收阶段向所述向量移位器发送当前填充过程编号i,并在接收到反馈的第一输出向量后,判定所述当前填充过程为最后一个填充过程时,将所述第一输出向量作为吸收阶段输出向量,判定所述当前填充过程不是最后一个填充过程时,采用所述第一输出向量对所述寄存器模块的当前状态向量进行更新,并对所述i进行加1操作后,将新的i发送至所述向量移位器;

所述向量移位器,用于根据所述i从获取的输入信息中确定出第i+1个长度为所述有效长度的第一向量,并将所述第一向量发送至所述向量异或器;

所述向量异或器,用于将所述第一向量与当前状态向量进行异或操作,并将得到的异或结果发送至f函数计算模块;

所述f函数计算模块,用于对所述异或结果进行f函数计算,得到第一输出向量,并将所述第一输出向量反馈至所述处理模块;

所述处理模块,还用于在压缩阶段,向所述f函数计算模块发送压缩指令;用于在接收到第二输出向量后,判定当前压缩过程为最后一个压缩过程时,基于所述吸收阶段输出向量和所述第二输出向量得到压缩阶段输出向,判定当前压缩过程不是最后一个压缩过程时,采用所述第二输出向量对所述寄存器模块的当前状态向量进行更新,并返回执行所述向所述f函数计算模块发送压缩指令;

所述f函数计算模块,用于依据所述压缩指令对当前状态向量进行f函数操作,得到第二输出向量,并将所述第二输出向量反馈至所述处理模块。

本发明实施例提供了一种基于RISC-V架构的SHA3算法实现方法、装置及系统,该方法包括:根据目标函数确定出有效长度和输出数据长度;根据输入信息、有效长度和输出数据长度,确定出吸收阶段的填充过程总数和压缩阶段的压缩过程总数;在吸收阶段,根据第一初始状态向量、输入信息、有效长度和填充过程总数,逐个对每个填充过程进行计算,得到吸收阶段输出向量;在压缩阶段,基于吸收阶段输出向量逐个对每个压缩过程进行计算,得到压缩阶段输出向量。

可见,本发明通过根据目标函数确定出SHA3算法中的有效长度和输出数据长度,再根据输入信息、有效长度和输出数据长度,进一步确定出吸收阶段的填充过程总数和压缩阶段的压缩过程总数,并在吸收阶段根据第一初始状态向量、输入信息、有校长度和填充过程总数,逐个对每个填充过程进行计算,从而得到吸收阶段输出向量,然后在压缩阶段中基于吸收阶段输出向量逐个对每个压缩过程进行计算,从而得到压缩阶段输出向量,通过该方法实现基于RISC-V架构的SHA3算法的加速计算,有利于扩大RISC-V架构的应用范围。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种基于RISC-V架构的SHA3算法实现方法的流程示意图;

图2为本发明实施例提供的一种函数参数配置表的示意图;

图3为本发明实施例提供的一种SHA3算法的函数结构示意图;

图4为本发明实施例提供的一种基于RISC-V架构的SHA3算法实现装置的结构示意图;

图5为本发明实施例提供的一种基于RISC-V架构的SHA3算法实现系统的结构示意图;

图6为本发明实施例提供的另一种基于RISC-V架构的SHA3算法实现系统的结构示意图。

具体实施方式

本发明实施例提供了一种基于RISC-V架构的SHA3算法实现方法、装置及系统,在使用过程中实现基于RISC-V架构的SHA3算法的加速计算,有利于扩大RISC-V架构的应用范围。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参照图1,图1为本发明实施例提供的一种基于RISC-V架构的SHA3算法实现方法的流程示意图。该方法包括:

S110:根据目标函数确定出有效长度和输出数据长度;

需要说明的是,在基于RISC-V架构实现SHA3算法时,可以根据目标函数先确定出SHA3算法的有效长度r和输出数据长度d。其中,不同的目标函数对应的有效长度和输出数据长度不同,具体可以根据目标函数的类型从预先建立的函数参数配置表匹配出与目标函数对应的有效长度和输出数据长度。该函数参数配置表如图2所示,SHA3算法可以包括6中函数类型,分别为:SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256,其中,SHA3-224、SHA3-256、SHA3-384、SHA3-512属于SHA3 Hash Function(哈希函数),这类函数的输出数据长度d是固定的,SHAKE128和SHAKE256属于SHA3 Extendable-OutputFunctions(扩展输出函数),其输出数据长度d是可变的。另外,图2中的I/O表示输出数据,State表示状态向量,状态向量的长度为r+c,r表示有效数据的长度(也即有效长度),c表示安全长度,d表示输出数据长度、单位bit,Byte是换算成Byte的长度,pad是指padding过程的字符。

S120:根据输入信息、有效长度和输出数据长度,确定出吸收阶段的填充过程总数和压缩阶段的压缩过程总数;

具体的,在确定出有效长度r和输出数据长度d后,获取输入信息,并根据该输入信息和有效长度进一步得到吸收阶段的填充过程总数N,根据有效长度和输出数据长度进一步得到压缩阶段的压缩过程总数M。

需要说明的是,如图3所示的SHA3哈希函数,SHA3哈希算法函数的核心部分为一个海绵结构,其中虚线左侧部分为吸收阶段(Absorbing),右侧为压缩阶段(Squeezing)。吸收阶段和压缩阶段中的圆角矩形f所指是哈希函数的主要处理方程,又称keccak-f函数或者permutation function(置换函数),最左侧是一个全零的向量,长度在SHA3中为1600bit,也被称为初始状态向量,可见在整个处理过程中,每个虚线矩形会将state处理过后,传给下一个虚线矩形,吸收阶段中的每个虚线矩形为一个填充过程(如P0、P1、P2等),压缩阶段中的每个虚线矩形为一个压缩过程(如Z0、Z1、Z2等)。输入信息的总长度为有效长度r的整数倍,能够被平均分为几个长度为r的向量与每个填充过程中的状态向量大前r个bit相异或。因此,在获取到输入信息后,可以根据输入信息的总长度以及有效长度r进一步确定出吸收阶段中填充过程的总数量,例如填充过程总数为N,则各个填充过程分别为P0、P1…P(N-1)。S130:在吸收阶段,根据第一初始状态向量、输入信息、有效长度和填充过程总数,逐个对每个填充过程进行计算,得到吸收阶段输出向量;

具体的,可以在接收到吸收指令后,根据该吸收指令执行吸收阶段的操作,具体可以从第一个填充过程开始至最后一个填充过程,根据第一初始状态向量、输入信息、有效长度逐个对每个填充过程进行计算,直至完成最后一个填充过程的计算后得到吸收阶段输出向量。

具体的,在吸收阶段,对于第一个填充过程P0初始状态向量0的前r个bit与输入向量的对应r个bie进行异或操作后输入至f函数进行f函数计算,然后将计算结果输出至第二个填充过程P1,依次类推直至最后一个填充过程执行结束。

S140:在压缩阶段,基于吸收阶段输出向量逐个对每个压缩过程进行计算,得到压缩阶段输出向量。

具体的,在吸收阶段结束后,进入压缩阶段,具体的可以在接收到压缩指令后,基于吸收阶段输出向量逐个对每个压缩过程进行计算,得到压缩阶段输出向量,从而实现SHA3算法的加速计算。并且,本发明在实现过程中仅需要两个指令(吸收指令和压缩指令)即可完成,运算量较少、效率高。

进一步的,在吸收阶段,根据第一初始状态向量、输入信息、有效长度和填充过程总数,逐个对每个填充过程进行计算,得到吸收阶段输出向量,包括:

针对第i个填充过程,从输入信息中获取第i+1个长度为有效长度的第一向量;

将第一向量与当前状态向量进行异或操作,得到异或结果;

对异或结果进行f函数计算,得到第一输出向量;

判断第i个填充过程是否为最后一个填充过程,若是,则将第一输出向量作为吸收阶段输出向量,若否,则采用第一输出向量对当前状态向量进行更新;

对i进行加1操作,并返回执行从输入信息中获取第i+1个长度为有效长度的第一向量,直至最后一个填充过程结束后得到吸收阶段输出向量;其中,i为0时,当前状态向量为第一初始状态向量。

需要说明的是,在实际应用中可以对于第一个填充过程P0,此时i为0,可以根据有效长度r从输入信息中确定出第一个长度r个bit的第一向量,并将初始状态向量的前r个bit与该第一向量进行异或操作,得到异或结果,将该异或结果输入至f函数进行f函数计算,得到第一输出向量,采用该第一输出向量对当前状态向量进行更新,得到新的当前状态向量输入至第二个填充过程P1,并通过i加1的方式更新i,也即将i更新为1,然后根据有效长度r从输入信息中确定出第二个长度为r个bit的第一向量,然后将计算结果输出至第二个填充过程P1,并将该第一向量与到更年期状态向量的前r个bit进行异或操作,得到异或结果,对该异或结果进行f函数计算,得到与第二个填充过程对应的第一输出向量,然后将该第一输出向量作为第三个填充过程的当前状态向量,并进入第三个填充过程的计算,依次类推直至最后一个填充过程执行结束,得到吸收阶段输出向量。

更进一步的,在压缩阶段,基于吸收阶段输出向量逐个对每个压缩过程进行计算,得到压缩阶段输出向量的过程,具体可以包括:

针对当前压缩过程,对当前状态向量进行f函数操作,得到第二输出向量;

判断当前压缩过程是否为最后一个压缩过程,若是,则基于吸收阶段输出向量和各个第二输出向量得到压缩阶段输出向量;若否,则采用第二输出向量对当前状态向量进行更新,并返回执行对当前状态向量进行f函数操作的过程,直至最后一个压缩过程执行结束。

需要说明的是看,在吸收阶段计算完成后,进入压缩阶段,在压缩阶段可以直接采用吸收阶段输出结果作为压缩阶段的初始状态向量,在第一个压缩过程中对该初始状态向量进行f函数计算,得到第二输出向量,在该压缩过程不是最后一个压缩过程时,将该第二输出向量作为新的当前状态向量,并对该当前状态向量进行f函数计算,得到该压缩过程的第二输出向量,直至最后一个压缩过程执行完毕后得到对应的第二输出向量,然后基于各阶段的第二输出向量和上一阶段的吸收阶段输出向量得到压缩阶段输出向量。其中,例如压缩过程为M个,则压缩阶段输出向量为吸收接收输出向量中前r个bit和前M-1个第二输出向量中每个第二输出向量的前r个bit以及第M个第二输出向量的(d-M*r)个bit的数据整合后作为最终的压缩阶段输出向量。例如,目标函数SHAKE128对应的输出数据长度d为2000bit,由于与其对应的有效长度r为1344,则能够得到对应的压缩过程为1个,也即在吸收阶段完成后,只需要执行一个Z0的过程,并且在得到与Z0过程对应的第二输出结果后,将吸收阶段输出向量的前1344个bit和该第二输出结果中前656个bit整合后得到最终的压缩阶段输出向量。

更进一步的,上述基于吸收阶段输出向量逐个对每个压缩过程进行计算,得到压缩阶段输出向量之前,该方法还可以包括:

判断输出向量长度是否大于有效长度,若是,则执行基于吸收阶段输出向量逐个对每个压缩过程进行计算,得到压缩阶段输出向量的步骤;若否,则直接将吸收阶段输出向量的输出向量长度个bit作为压缩阶段输出向量。

可以理解的是,当目标函数为SHA3-224、SHA3-256、SHA3-384、SHA3-512这几种函数时,由图2中的表格可以看出,这几种函数对应的输出数据长度均小于对应的有效长度r,因此,针对这几种函数,在吸收阶段结束后得到吸收阶段输出向量后,对应的压缩过程数量可以为0个,也即不执行压缩过程,只需要直接将吸收阶段输出向量的前输出向量长度个bit作为压缩阶段输出向量即可。当然,对于SHAKE128和SHAKE256这两种类型的函数,则可以判断目标函数对应的输出向量长度d是否大于有效长度r,当不大于时,则也可以直接将吸收阶段输出向量的前输出向量长度个bit作为压缩阶段输出向量即可,当大于时,则可以根据压缩过程数量来逐个对每个压缩过程进行计算,最后根据吸收阶段输出向量和每个压缩过程的第二输出向量得到最终长度为输出向量长度d的压缩阶段输出向量。例如,对于SHAKE128,当d为小于等于1344时,则无需进行压缩过程的计算,当d大于1344时,则需要进行压缩过程的计算。

可见,本发明通过根据目标函数确定出SHA3算法中的有效长度和输出数据长度,再根据输入信息、有效长度和输出数据长度,进一步确定出吸收阶段的填充过程总数和压缩阶段的压缩过程总数,并在吸收阶段根据第一初始状态向量、输入信息、有校长度和填充过程总数,逐个对每个填充过程进行计算,从而得到吸收阶段输出向量,然后在压缩阶段中基于吸收阶段输出向量逐个对每个压缩过程进行计算,从而得到压缩阶段输出向量,通过该方法实现基于RISC-V架构的SHA3算法的加速计算,有利于扩大RISC-V架构的应用范围。

在上述实施例的基础上,本发明实施例还提供了一种基于RISC-V架构的SHA3算法实现装置,具体请参照图4。该装置包括:

确定模块11,用于根据目标函数确定出有效长度和输出数据长度;

计算模块12,用于根据输入信息、有效长度和输出数据长度,确定出吸收阶段的填充过程总数和压缩阶段的压缩过程总数;

吸收处理模块13,用于在吸收阶段,根据第一初始状态向量、输入信息、有效长度和填充过程总数,逐个对每个填充过程进行计算,得到吸收阶段输出向量;

压缩处理模块14,用于在压缩阶段,基于吸收阶段输出向量逐个对每个压缩过程进行计算,得到压缩阶段输出向量。

可选的,吸收处理模块13,包括:

第一获取单元,用于针对第i个填充过程,从输入信息中获取第i+1个长度为有效长度的第一向量;

异或单元,用于将第一向量与当前状态向量进行异或操作,得到异或结果;

计算单元,用于对异或结果进行f函数计算,得到第一输出向量;

第一判断单元,用于判断第i个填充过程是否为最后一个填充过程,若是,则触发第一确定单元,若否,则触发第一更新单元;

第一确定单元,用于将第一输出向量作为吸收阶段输出向量;

第一更新单元,用于采用第一输出向量对当前状态向量进行更新;

第二更新单元,用于对i进行加1操作,并触发获取模块,直至最后一个填充过程结束后得到吸收阶段输出向量;其中,i为0时,当前状态向量为第一初始状态向量。

可选的,压缩处理模块14,包括:

f函数计算单元,用于针对当前压缩过程,对当前状态向量进行f函数操作,得到第二输出向量;

第二判断单元,用于判断当前压缩过程是否为最后一个压缩过程,若是,则触发第二确定单元,若否,则触发第三更新单元;

第二确定单元,用于基于吸收阶段输出向量和第二输出向量得到压缩阶段输出向量;

第三更新单元,用于采用第二输出向量对当前状态向量进行更新,并触发f函数计算单元,直至最后一个压缩过程执行结束。

需要说明的是,本发明实施例中的基于RISC-V架构的SHA3算法实现装置具有与上述实施例中提供的基于RISC-V架构的SHA3算法实现方法相同的有益效果,并且对于本发明实施例中所涉及到的基于RISC-V架构的SHA3算法实现方法的具体介绍请参照上述实施例,本发明在此不再赘述。

在上述实施例的基础上,本发明实施例还提供了一种基于RISC-V架构的SHA3算法实现系统,如图4所示,该系统包括存储器2和处理器3,其中:

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

处理器3,用于执行计算机程序时实现如权利要求1基于RISC-V架构的SHA3算法实现方法的步骤。

例如,本发明实施例中的处理器用于实现根据目标函数确定出有效长度和输出数据长度;根据输入信息、有效长度和输出数据长度,确定出吸收阶段的填充过程总数和压缩阶段的压缩过程总数;在吸收阶段,根据第一初始状态向量、输入信息、有效长度和填充过程总数,逐个对每个填充过程进行计算,得到吸收阶段输出向量;在压缩阶段,基于吸收阶段输出向量逐个对每个压缩过程进行计算,得到压缩阶段输出向量。

进一步的,处理器3包括处理模块31、寄存器模块32、向量移位器33、向量异或器34和f函数计算模块35,其中:

寄存器模块32,用于存储输入信息和状态向量;

处理模块31,用于根据目标函数确定出有效长度和输出数据长度,根据输入信息、有效长度和输出数据长度,确定出吸收阶段的填充过程总数和压缩阶段的压缩过程总数;用于在吸收阶段向向量移位器33发送当前填充过程编号i,并在接收到反馈的第一输出向量后,判定当前填充过程为最后一个填充过程时,将第一输出向量作为吸收阶段输出向量,判定当前填充过程不是最后一个填充过程时,采用第一输出向量对寄存器模块32的当前状态向量进行更新,并对i进行加1操作后,将新的i发送至向量移位器33;

向量移位器33,用于根据i从获取的输入信息中确定出第i+1个长度为有效长度的第一向量,并将第一向量发送至向量异或器34;

向量异或器34,用于将第一向量与当前状态向量进行异或操作,并将得到的异或结果发送至f函数计算模块35;

f函数计算模块35,用于对异或结果进行f函数计算,得到第一输出向量,并将第一输出向量反馈至处理模块31;

处理模块31,还用于在压缩阶段,向f函数计算模块35发送压缩指令;用于在接收到第二输出向量后,判定当前压缩过程为最后一个压缩过程时,基于吸收阶段输出向量和第二输出向量得到压缩阶段输出向,判定当前压缩过程不是最后一个压缩过程时,采用第二输出向量对寄存器模块32的当前状态向量进行更新,并返回执行向f函数计算模块35发送压缩指令;

f函数计算模块35,用于依据压缩指令对当前状态向量进行f函数操作,得到第二输出向量,并将第二输出向量反馈至处理模块31。

需要说明的是,如图6所示,寄存器模块32具体可以包括第一向量寄存器和第二向量寄存器,其中,第一向量寄存器用于存储输入信息,第二向量寄存器用于存储状态向量。处理模块1根据目标函数确定出有效长度r和输出数据长度d后,根据输入信息和有效长度确定出吸收阶段的填充过程总数,根据有效长度和输出数据长度确定出压缩阶段的压缩过程总数,并且在吸收阶段根据吸收指令向向量移位器33发送当前填充过程编号i,其中,i从0开始,向量移位器33根据该i值,从输入信息中获取第i+1个长度为r的第一向量,然后将该第一向量发送至向量异或器34,例如,对于第一个吸收过程,i=0,则从输入信息中获取第1个长度为r的第一向量发送至向量异或器34,并且处理模块31也会将有效长度r发送至向量异或器34,向量异或器34从第二向量寄存器获取当前状态向量,然后将当前状态向量的前r个bit与第一向量发送进行异或操作,得到异或结果发送至f函数计算模块35,f函数计算模块35对该异或结果进行f函数计算,得到第一输出向量,然后将该第一输出向量反馈至处理模块31,处理模块31进一步判断当前填充过程是否为最后一个填充过程,若是,则将第一输出向量作为吸收阶段输出向量,若否,则将该第一输出向量发送至第二向量寄存器以对第二向量寄存器中的当前状态向量进行更新,然后将下一个填充过程编号i+1发送至向量移位器33,以便向量移位器33从输入信息中获取到第i+2个长度为r的第一向量发送至向量异或器34,向量异或器34根据接收到的新的第一向量与当前状态向量的前r个bit进行异或操作,得到异或结果发送至f函数计算模块35,f函数计算模块35对该异或结果进行f函数计算,得到与第i+1个填充过程对应的第一输出向量,并反馈至处理模块31,直至在确定出当前填充过程为最后一个填充过程时,将第一输出向量作为吸收阶段输出向量,从而完成吸收阶段的计算。

在压缩阶段,处理模块31向f函数计算模块35发送压缩指令,f函数计算模块35依据压缩指令从第二向量寄存器中获取出当前状态向量(其中,对于第一个压缩过程,与其对应的当前状态向量为吸收阶段输出向量),对当前状态向量进行f函数操作,得到第二输出向量,并将第二输出向量反馈至处理模块31,处理模块31在接收到第二输出向量后,判定当前压缩过程为最后一个压缩过程时,基于吸收阶段输出向量和得到的各第二输出向量得到压缩阶段输出向,判定当前压缩过程不是最后一个压缩过程时,将该第二输出向量发送至第二向量寄存器,对第二向量寄存器中的当前状态向量进行更新,并返回执行向f函数计算模块35发送压缩指令,直至最后一个压缩过程计算结束,得到最终的压缩阶段输出向量。

另外,对于吸收阶段和压缩阶段的具体介绍还请参数上述方法实施例,本发明在此不再赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其他形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号