1.本技术涉及信息处理技术领域,更具体地说,涉及一种消息填充方法、装置、设备及计算机可读存储介质。
背景技术:2.哈希函数作为密码学的一个重要分支,是一种将任意长度的消息输入转化为固定长度摘要输出且不可逆的单项密码体制。目前常用的哈希函数包括md5算法、sm3算法以及sha系列算法等。而且,在哈希函数的运行过程中,需要对消息进行填充,比如填充为128bit、256bit或512bit等,为实现此目的,可以在消息后添加单比特的“1”,中间添加多比特的“0”,最后再添加单比特的“1”。然而,该消息填充过程是按照比特寻址,输入的最小单位为比特,消息填充速率较慢。
3.综上所述,如何提高消息填充效率是目前本领域技术人员亟待解决的问题。
技术实现要素:4.本技术的目的是提供一种消息填充方法,其能在一定程度上解决如何提高消息填充效率的技术问题。本技术还提供了一种消息填充装置、电子设备及计算机可读存储介质。
5.为了实现上述目的,本技术提供如下技术方案:一种消息填充方法,包括:获取待填充的初始消息;获取所述初始消息的填充参数,所述填充参数包括消息分组长度;按照目标比特位宽对所述初始消息进行比例位宽转换,得到相应的数据块;按照所述消息分组长度对所述数据块进行拼接,若拼接得到的拼接消息的长度小于所述消息分组长度,则基于预设字节对所述拼接消息进行填充,得到长度为所述消息分组长度的目标消息;对所述目标消息进行位序转换,得到所述初始消息的填充结果。
6.优选的,所述消息分组长度包括基于消息摘要长度确定的分组长度;所述按照所述消息分组长度对所述数据块进行拼接,若拼接得到的拼接消息的长度小于所述消息分组长度,包括:将所述数据块移位寄存入预设的缓冲寄存器缓存中进行拼接,所述缓冲寄存器缓存的长度等于所述消息分组长度;若所述缓冲寄存器缓存未满,则判定拼接得到的所述拼接消息的长度小于所述消息分组长度。
7.优选的,所述填充参数包括消息分组计数阈值,所述消息分组计数阈值包括所述消息分组长度与所述目标比特位宽的比值;所述将所述数据块移位寄存入预设的缓冲寄存器缓存中进行拼接之后,还包括:记录所述缓冲寄存器缓存中当前轮的拼接次数值;
所述基于预设字节对所述拼接消息进行填充,得到长度为所述消息分组长度的目标消息,包括:确定所述拼接次数值与所述消息分组计数阈值的比较结果,按照所述比较结果,基于所述预设字节对所述拼接消息进行填充,得到长度为所述消息分组长度的所述目标消息。
8.优选的,所述确定所述拼接次数值与所述消息分组计数阈值的比较结果,按照所述比较结果,基于所述预设字节对所述拼接消息进行填充,得到长度为所述消息分组长度的所述目标消息,包括:判断所述拼接次数值是否等于所述消息分组计数阈值;若所述拼接次数值等于所述消息分组计数阈值,则确定所述拼接消息中最后一次拼接的所述数据块与所述目标比特位宽间的第一长度差值,判断所述第一长度差值是否等于所述预设字节的长度值,若所述第一长度差值等于所述预设字节的长度值,则在所述拼接消息后填充0x86,得到长度为所述消息分组长度的所述目标消息。
9.优选的,所述判断所述第一长度差值是否等于所述预设字节的长度值之后,还包括:若所述第一长度差值大于所述预设字节的长度值,则在所述拼接消息后填充0x80,同时确定所述拼接消息中最后一次拼接的所述数据块与所述目标比特位宽间的第二长度差值,判断所述第二长度差值是否等于两个所述预设字节的长度值,若所述第二长度差值等于两个所述预设字节的长度值,则在所述拼接消息后填充0x06,返回执行所述判断所述拼接次数值是否等于所述消息分组计数阈值的步骤,直至得到长度为所述消息分组长度的所述目标消息。
10.优选的,所述判断所述第二长度差值是否等于两个所述预设字节的长度值之后,还包括:若所述第二长度差值大于两个所述预设字节的长度值,则计算所述第二长度差值与所述预设字节的长度值间的第一比值,计算所述第一比值与2间的第一差值,在所述拼接消息后填充数值等于所述第一差值的0x00,再在所述拼接消息后填充0x06,返回执行所述判断所述拼接次数值是否等于所述消息分组计数阈值的步骤,直至得到长度为所述消息分组长度的所述目标消息。
11.优选的,所述判断所述拼接次数值是否等于所述消息分组计数阈值之后,还包括:若所述拼接次数值小于所述消息分组计数阈值,则计算所述消息分组长度与所述拼接消息间的第二差值,计算所述第二差值与所述预设字节的长度值间的第二比值,计算所述第二比值与2间的第二差值,在所述拼接消息后填充数值等于所述第二差值的0x00,再在所述拼接消息后填充0x06,返回执行所述判断所述拼接次数值是否等于所述消息分组计数阈值的步骤,直至得到长度为所述消息分组长度的所述目标消息。
12.优选的,所述若所述缓冲寄存器缓存未满,则判定拼接得到的所述拼接消息的长度小于所述消息分组长度之后,还包括:若所述缓冲寄存器缓存已满,则对所述拼接消息进行位序转换,得到所述初始消息的所述填充结果。
13.优选的,所述初始消息包括进行sha-3运算的消息;所述目标比特位宽包括64bit;
所述预设字节包括8比特的字节。
14.一种消息填充装置,包括:获取模块,用于获取待填充的初始消息;获取所述初始消息的填充参数,所述填充参数包括消息分组长度;划分模块,用于按照目标比特位宽对所述初始消息进行比例位宽转换,得到相应的数据块;填充模块,用于按照所述消息分组长度对所述数据块进行拼接,若拼接得到的拼接消息的长度小于所述消息分组长度,则基于预设字节对所述拼接消息进行填充,得到长度为所述消息分组长度的目标消息;对所述目标消息进行位序转换,得到所述初始消息的填充结果。
15.优选的,所述填充模块包括与所述划分模块连接的移位寄存器,与所述移位寄存器连接的分组计数器和缓冲寄存器缓存,与所述分组计数器及所述缓冲寄存器缓存连接的配置寄存器,与所述分组计数器连接的填充状态机,与所述填充状态机及所述配置寄存器连接的填充器,与所述缓冲寄存器缓存及所述填充器连接的数据选择器,与所述数据选择器连接的位序转换器:所述移位寄存器,用于接收所述划分模块发送的所述数据块;所述分组计数器,用于将所述移位寄存器中的所述数据块移位寄存入所述缓冲寄存器缓存进行拼接,并记录所述缓冲寄存器缓存中当前轮的拼接次数值;所述填充状态机,用于若所述缓冲寄存器缓存未满,则判定拼接得到的所述拼接消息的长度小于所述消息分组长度,控制所述填充器基于预设字节对所述拼接消息进行填充,得到长度为所述消息分组长度的目标消息;所述数据选择器,用于将所述目标消息传输至所述位序转换器;所述位序转换器,用于对所述目标消息进行位序转换,得到所述初始消息的填充结果;所述配置寄存器,用于存储所述填充参数。
16.优选的,所述填充状态机用于:确定所述拼接次数值与所述消息分组计数阈值的比较结果,按照所述比较结果,控制所述填充器基于所述预设字节对所述拼接消息进行填充,得到长度为所述消息分组长度的所述目标消息。
17.优选的,所述位序转换器用于:若所述缓冲寄存器缓存已满,则对所述数据选择器传输的所述拼接消息进行位序转换,得到所述初始消息的所述填充结果。
18.一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上任一所述消息填充方法的步骤。
19.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述消息填充方法的步骤。
20.本技术提供的一种消息填充方法,获取待填充的初始消息;获取初始消息的填充参数,填充参数包括消息分组长度;按照目标比特位宽对初始消息进行比例位宽转换,得到相应的数据块;按照消息分组长度对数据块进行拼接,若拼接得到的拼接消息的长度小于消息分组长度,则基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消
息;对目标消息进行位序转换,得到初始消息的填充结果。本技术中,按照目标比特位宽将初始消息转换为相应的数据块,便于后续按照消息分组长度对数据块进行拼接以得到长度为消息分组长度的目标消息,且在拼接得到的拼接消息的长度小于消息分组长度时,可以基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息,最后再对目标消息进行位序转换,即可得到初始消息的填充结果,实现了以字节为单位对消息进行填充,提高了消息填充效率。本技术提供的一种消息填充系统、电子设备及计算机可读存储介质也解决了相应技术问题。
附图说明
21.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
22.图1为本技术实施例提供的一种消息填充方法的流程图;图2为本技术实施例提供的一种消息填充装置的结构示意图;图3为划分模块与填充模块的接口示意图;图4为本技术实施例提供的一种消息填充装置中填充模块的结构示意图;图5为填充状态机的控制示意图;图6为本技术实施例提供的一种电子设备的结构示意图;图7为本技术实施例提供的一种电子设备的另一结构示意图。
具体实施方式
23.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
24.哈希函数作为密码学的一个重要分支,是一种将任意长度的消息输入转化为固定长度摘要输出且不可逆的单项密码体制。目前常用的哈希函数包括md5算法、sm3算法以及sha(secure hash algorithm,安全散列算法)系列算法等。但是由于md5算法和sha算法近年来相继遭受了碰撞攻击,因此nist(national institute of standards and technology,美国国家标准与技术研究院)在2012年从最初被提交的64个算法中选择keccak算法成为新一代哈希函数标准,并命名为sha-3算法。
25.keccak可以生成任意长度的散列值,但为了配合sha-2的散列值长度,sha-3标准中规定了sha3-224、sha3-256、sha3-384、sha3-512这四种版本,消息分组长度分别为1152bit、1088bit、832bit、576bit。若实际的消息分组长度小于上述四种版本对应的分组长度,需要在数据的尾部进行相应的填充。
26.目前dma(direct memory access,直接存储器访问)传输数据位宽一般为128bit/256bit/512bit等大位宽,若对dma的数据填充为sha-3的分组数据长度,需进行非整数倍的位宽转换,直接实现相对困难。目前消息填充主要通过上位机软件来实现,先将消息长度填
充为需要的分组长度的整数倍,然后通过dma下发。且在keccak算法中,采用的填充规则被称为多重位速率填充,表示为“pad10*1”,其中的*表示需要填充的“0”可以被省略或多次重复。具体规则是,在消息后添加单比特的“1”,中间添加多比特的“0”,最后再添加单比特的“1”,使得填充后的消息长度是消息分组长度,然而,该消息填充过程是按照比特寻址,输入的最小单位为比特,消息填充速率较慢。而本技术提供的消息填充方法可以提高消息填充效率。
27.请参阅图1,图1为本技术实施例提供的一种消息填充方法的流程图。
28.本技术实施例提供的一种消息填充方法,可以包括以下步骤:步骤s101:获取待填充的初始消息。
29.实际应用中,可以先获取待填充的初始消息,初始消息的长度及类型等均可以根据实际需要确定,比如初始消息可以包括进行sha-3运算的消息等,此外,具体应用场景中,本技术提供的消息填充方法可以应用于fpga(field programmable gate array,现场可编程逻辑门阵列),此时fpga可以从自身连接的dma中获取待填充的初始消息等,此外,fpga的数据接口可以为amba axi4-stream数据接口等,本技术在此不做具体限定。
30.步骤s102:获取初始消息的填充参数,填充参数包括消息分组长度。
31.实际应用中,在获取待填充的初始消息之后,便可以获取初始消息的填充参数,且填充参数中可以包括消息分组长度,消息分组长度也即填充后的消息的长度值,消息分组长度的具体值可以根据实际需要确定,本技术在此不做具体限定。
32.步骤s103:按照目标比特位宽对初始消息进行比例位宽转换,得到相应的数据块。
33.实际应用中,在获取初始消息的填充参数之后,便可以按照目标比特位宽对初始消息进行比例位宽转换,得到相应的数据块,以便后续以数据块为单位进行高效率的数据拼接。需要说明的是,目标比特位宽的值可以根据实际需要确定,比如目标比特位宽可以为64bit等。
34.步骤s104:按照消息分组长度对数据块进行拼接,若拼接得到的拼接消息的长度小于消息分组长度,则基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息。
35.实际应用中,在按照目标比特位宽对初始消息进行比例位宽转换,得到相应的数据块之后,便可以按照消息分组长度对数据块进行拼接,若拼接得到的拼接消息的长度小于消息分组长度,则基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息。需要说明的是,本技术中预设字节的长度可以根据实际需要确定,比如预设字节可以包括8比特的字节等,本技术在此不做具体限定。
36.具体应用场景中,为了便于管控消息填充过程,可以设置消息分组长度包括基于最终输出的消息摘要长度确定的分组长度,比如消息摘要长度为512bit时,消息分组长度可以为576bit等;相应的,在按照消息分组长度对数据块进行拼接,若拼接得到的拼接消息的长度小于消息分组长度的过程中,可以将数据块移位寄存入预设的buffer(缓冲寄存器)缓存,比如将数据库移位寄存入fpga的buffer缓存中进行拼接,buffer缓存的长度等于消息分组长度;若buffer缓存未满,则判定拼接得到的拼接消息的长度小于消息分组长度。
37.具体应用场景中,为了提高消息填充的效率,可以设置填充参数包括消息分组计数阈值,消息分组计数阈值包括消息分组长度与目标比特位宽的比值;相应的,在将数据块
移位寄存入预设的buffer缓存中进行拼接之后,还可以记录buffer缓存中当前轮的拼接次数值;继而在基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息的过程中,可以确定拼接次数值与消息分组计数阈值的比较结果,按照比较结果,基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息。
38.具体应用场景中,在确定拼接次数值与消息分组计数阈值的比较结果,按照比较结果,基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息的过程中,可以判断拼接次数值是否等于消息分组计数阈值;若拼接次数值等于消息分组计数阈值,则确定拼接消息中最后一次拼接的数据块与目标比特位宽间的第一长度差值,判断第一长度差值是否等于预设字节的长度值,若第一长度差值等于预设字节的长度值,则在拼接消息后填充0x86,得到长度为消息分组长度的目标消息;此时,预设字节也即0x86。相应的,在判断第一长度差值是否等于预设字节的长度值之后,还可以执行以下步骤:若第一长度差值大于预设字节的长度值,则在拼接消息后填充0x80,同时确定拼接消息中最后一次拼接的数据块目标比特位宽间的第二长度差值,判断第二长度差值是否等于两个预设字节的长度值,若第二长度差值等于两个预设字节的长度值,则说明需要填充两个预设字节,此时可以在拼接消息后填充0x06,返回执行判断拼接次数值是否等于消息分组计数阈值的步骤,直至得到长度为消息分组长度的目标消息。此时,预设字节也即0x80和0x06。
39.具体应用场景中,在判断第二长度差值是否等于两个预设字节的长度值之后,还可以执行以下步骤:若第二长度差值大于两个预设字节的长度值,则说明需要填充大于两个的多个字节,此时可以计算第二长度差值与预设字节的长度值间的第一比值,计算第一比值与2间的第一差值,在拼接消息后填充数值等于第一差值的0x00,再在拼接消息后填充0x06,返回执行判断拼接次数值是否等于消息分组计数阈值的步骤,直至得到长度为消息分组长度的目标消息。此时,预设字节也即0x00和0x06。
40.具体应用场景中,在判断拼接次数值是否等于消息分组计数阈值之后,若拼接次数值小于消息分组计数阈值,则可以计算消息分组长度与拼接消息间的第二差值,计算第二差值与预设字节的长度值间的第二比值,计算第二比值与2间的第二差值,在拼接消息后填充数值等于第二差值的0x00,再在拼接消息后填充0x06,返回执行判断拼接次数值是否等于消息分组计数阈值的步骤,直至得到长度为消息分组长度的目标消息。此时,预设字节也即0x00和0x06。
41.具体应用场景中,若buffer缓存未满,则判定拼接得到的拼接消息的长度小于消息分组长度之后,还可以执行以下步骤:若buffer缓存已满,则对拼接消息进行位序转换,得到初始消息的填充结果。
42.需要说明的是,随着方法的进行,拼接消息及最后一次拼接的数据块发生了多次变化,但不论拼接消息如何变化,相应步骤执行时所涉及的拼接消息及最后一次拼接的数据块均指的是当前时刻下最新的拼接消息。
43.步骤s105:对目标消息进行位序转换,得到初始消息的填充结果。
44.实际应用中,fpga在得到目标消息之后,便可以对目标消息进行位序转换,得到初始消息的填充结果。需要说明的是,在得到填充结果之后,可以对填充消息进行处理,比如基于sha-3算法对填充结果进行运算等,本技术在此不做具体限定。
45.本技术提供的一种消息填充方法,获取待填充的初始消息;获取初始消息的填充
参数,填充参数包括消息分组长度;按照目标比特位宽对初始消息进行比例位宽转换,得到相应的数据块;按照消息分组长度对数据块进行拼接,若拼接得到的拼接消息的长度小于消息分组长度,则基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息;对目标消息进行位序转换,得到初始消息的填充结果。本技术中,按照目标比特位宽将初始消息转换为相应的数据块,便于后续按照消息分组长度对数据块进行拼接以得到长度为消息分组长度的目标消息,且在拼接得到的拼接消息的长度小于消息分组长度时,可以基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息,最后再对目标消息进行位序转换,即可得到初始消息的填充结果,实现了以字节为单位对消息进行填充,提高了消息填充效率。
46.请参阅图2,图2为本技术实施例提供的一种消息填充装置的结构示意图。
47.本技术实施例提供的一种消息填充装置,可以包括:获取模块101,用于获取待填充的初始消息;获取初始消息的填充参数,填充参数包括消息分组长度;划分模块102,用于按照目标比特位宽对初始消息进行比例位宽转换,得到相应的数据块;填充模块103,用于按照消息分组长度对数据块进行拼接,若拼接得到的拼接消息的长度小于消息分组长度,则基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息;对目标消息进行位序转换,得到初始消息的填充结果。
48.需要说明的是,划分模块与填充模块上的接口可以根据实际需要确定,比如划分模块与填充模块的接口示意图可以如图3所示,其中,valid、ready、strb、keep、last表示相应的控制信号,valid_*(信号类型1)表示主机数据有效信号;ready_*(信号类型2)表示从机发出的接收准备好信号;data表示相应的数据信号,data_*(数据)表示主机发出的数据;strb_*(信号类型3)表示数据中相关字节内容作为一个数字字节或者一个位置字节;keep_*(信号类型4)表示数据中相关字节的内容是否作为数据流的一部分被处理;last_*(信号类型5)表示数据包的最后一个数据标志;byte表示相应的字节信号,byte_num 为表示拼接消息中最后一个数据块的字节与8字节的倍数值。且图3中m的值可以取决于dma数据位宽,一般取16,32,64等,当初始消息为进行sha-3方法运算的消息时,n的值可以取决于sha-3消息分组长度,取值为9,12,17,18等,本技术在此不做具体限定。
49.请参阅图4,本技术实施例提供的一种消息填充装置,填充模块可以包括与划分模块连接的移位寄存器,与移位寄存器连接的分组计数器和buffer缓存,与分组计数器及buffer缓存连接的配置寄存器,与分组计数器连接的填充状态机,与填充状态机及配置寄存器连接的填充器,与buffer缓存及填充器连接的数据选择器,与数据选择器连接的位序转换器:移位寄存器,用于接收划分模块发送的数据块;分组计数器,用于将移位寄存器中的数据块移位寄存入buffer缓存进行拼接,并记录buffer缓存中当前轮的拼接次数值;填充状态机,用于若buffer缓存未满,则判定拼接得到的拼接消息的长度小于消息分组长度,控制填充器基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息;
数据选择器,用于将目标消息传输至位序转换器;位序转换器,用于对目标消息进行位序转换,得到初始消息的填充结果;配置寄存器,用于存储填充参数,且具体应用场景中,可以通过axilite2apb(高级可扩展接口低吞吐量总线转外围总线)将填充参数更新到配置寄存器中等。
50.本技术实施例提供的一种消息填充装置,填充状态机用于:确定拼接次数值与消息分组计数阈值的比较结果,按照比较结果,控制填充器基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息。
51.本技术实施例提供的一种消息填充装置,位序转换器用于:若buffer缓存已满,则对数据选择器传输的拼接消息进行位序转换,得到初始消息的填充结果。
52.本技术实施例提供的一种消息填充装置,填充状态机用于:判断拼接次数值是否等于消息分组计数阈值;若拼接次数值等于消息分组计数阈值,则确定拼接消息中最后一次拼接的数据块与目标比特位宽间的第一长度差值,判断第一长度差值是否等于预设字节的长度值,若第一长度差值等于预设字节的长度值,则控制填充器在拼接消息后填充0x86,得到长度为消息分组长度的目标消息。
53.本技术实施例提供的一种消息填充装置,填充状态机用于:判断第一长度差值是否等于预设字节的长度值之后,若第一长度差值大于预设字节的长度值,则控制填充器在拼接消息后填充0x80,同时确定拼接消息中最后一次拼接的数据块与目标比特位宽间的第二长度差值,判断第二长度差值是否等于两个预设字节的长度值,若第二长度差值等于两个预设字节的长度值,则控制器填充器在拼接消息后填充0x06,返回执行判断拼接次数值是否等于消息分组计数阈值的步骤,直至得到长度为消息分组长度的目标消息。
54.本技术实施例提供的一种消息填充装置,填充状态机用于:判断第二长度差值是否等于两个预设字节的长度值之后,若第二长度差值大于两个预设字节的长度值,则计算第二长度差值与预设字节的长度值间的第一比值,计算第一比值与2间的第一差值,控制填充器在拼接消息后填充数值等于第一差值的0x00,再控制填充器在拼接消息后填充0x06,返回执行判断拼接次数值是否等于消息分组计数阈值的步骤,直至得到长度为消息分组长度的目标消息。
55.本技术实施例提供的一种消息填充装置,填充状态机用于:判断拼接次数值是否等于消息分组计数阈值之后,若拼接次数值小于消息分组计数阈值,则计算消息分组长度与拼接消息间的第二差值,计算第二差值与预设字节的长度值间的第二比值,计算第二比值与2间的第二差值,控制填充器在拼接消息后填充数值等于第二差值的0x00,再控制填充器在拼接消息后填充0x06,返回执行判断拼接次数值是否等于消息分组计数阈值的步骤,直至得到长度为消息分组长度的目标消息。
56.需要说明的是,具体应用场景中,为了便于填充状态机控制填充器的动作,可以设置填充状态机在不同情况下的状态,并设置填充器在填充状态机的不同状态下执行不同的操作,为了便于理解,假设用last信号表征buffer缓存是否为满,用pk_cnt表示buffer缓存中当前轮的拼接次数值,用pk_num表示消息分组计数阈值,用byte_num表示拼接消息中最后一个数据块的字节与8字节的倍数值,且byte_num从0计数至7,则填充状态机的控制示意图可以如图5所示,其可以包括以下操作:(1)填充状态机初始状态s0为idle状态,当检测到last信号有效时,也即条件1:
is_last成立时,跳转到s1状态;(2)填充状态机在s1状态判断当前分组计数器pk_cnt的计数器是否达到了预设的阈值pk_num,若pk_cnt等于pk_num,也即条件2:pk_cnt == pk_num成立时,则跳转到s2状态;若pk_cnt小于pk_num,也即条件3:pk_cnt 《 pk_num成立时,则跳转到s4状态;(3)填充状态机在s2状态判断当前byte_num的值是否为6,若等于6,也即条件4:byte_num ==6成立时,则说明需要一个字节的数据填充,接下来跳转到s3状态,指示填充器为拼接消息完成0x86的数据填充;若byte_num 不等于6,也即条件5:byte_num !=6成立时,则说明需要多个字节的数据填充,接下来跳转到s4;(4)填充状态机在s4状态首先控制填充器为拼接消息填充一个字节0x80,同时判断byte_num的值是否等于5且pk_cnt的值是否等于预设阈值pk_num,若两个条件都满足,也即条件6:byte_num ==5 &&pk_cnt == pk_num成立时,则说明该分组需要2个字节的数据填充,接下来跳转到s6;若不满足上述两个条件,则需要多个字节(大于2个)的填充,接下来跳转到s5;(5)填充状态机在s5状态控制填充器主要为拼接消息完成字节0x00的填充,也即在条件7:byte_cnt 《7成立的过程中,首先根据当前pk_cnt的值确定填充8的整数倍的0x00,比如当前pk_cnt的值为7,而pk_num的值为9,且目标比特位宽为64比特,则需要填充(9-7)*64/8=16个0x00;然后根据byte_num的值确定剩余个数(小于8个)的0x00,假设byte_num的值为4,则需要填充(7-4-2)=1个0x00;最后在条件8:byte_cnt ==7成立时跳转到s6状态。
57.(6)填充状态机在s6状态控制填充器为拼接消息完成字节0x06的填充,之后返回s1状态。
58.本技术实施例提供的一种消息填充装置,初始消息包括进行sha-3运算的消息;目标比特位宽包括64bit;预设字节包括8比特的字节。
59.本技术还提供了一种电子设备及计算机可读存储介质,其均具有本技术实施例提供的一种消息填充方法具有的对应效果。请参阅图6,图6为本技术实施例提供的一种电子设备的结构示意图。
60.本技术实施例提供的一种电子设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:获取待填充的初始消息;获取初始消息的填充参数,填充参数包括消息分组长度;按照目标比特位宽对初始消息进行比例位宽转换,得到相应的数据块;按照消息分组长度对数据块进行拼接,若拼接得到的拼接消息的长度小于消息分组长度,则基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息;对目标消息进行位序转换,得到初始消息的填充结果。
61.本技术实施例提供的一种电子设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:消息分组长度包括基于消息摘要长度确定的分组长度;将数据块移位寄存入预设的buffer缓存中进行拼接,buffer缓存的长度等于消息分组长度;若buffer缓存未满,则判定拼接得到的拼接消息的长度小于消息分组长度。
62.本技术实施例提供的一种电子设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:填充参数包括消息分组计数阈值,消息分组计数阈值包括消息分组长度与目标比特位宽的比值;将数据块移位寄存入预设的buffer缓存中进行拼接之后,记录buffer缓存中当前轮的拼接次数值;确定拼接次数值与消息分组计数阈值的比较结果,按照比较结果,基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息。
63.本技术实施例提供的一种电子设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:判断拼接次数值是否等于消息分组计数阈值;若拼接次数值等于消息分组计数阈值,则确定拼接消息中最后一次拼接的数据块与目标比特位宽间的第一长度差值,判断第一长度差值是否等于预设字节的长度值,若第一长度差值等于预设字节的长度值,则在拼接消息后填充0x86,得到长度为消息分组长度的目标消息。
64.本技术实施例提供的一种电子设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:判断第一长度差值是否等于预设字节的长度值之后,若第一长度差值大于预设字节的长度值,则在拼接消息后填充0x80,同时确定拼接消息中最后一次拼接的数据块与目标比特位宽间的第二长度差值,判断第二长度差值是否等于两个预设字节的长度值,若第二长度差值等于两个预设字节的长度值,则在拼接消息后填充0x06,返回执行判断拼接次数值是否等于消息分组计数阈值的步骤,直至得到长度为消息分组长度的目标消息。
65.本技术实施例提供的一种电子设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:判断第二长度差值是否等于两个预设字节的长度值之后,若第二长度差值大于两个预设字节的长度值的两倍,则计算第二长度差值与预设字节的长度值间的第一比值,计算第一比值与2间的第一差值,在拼接消息后填充数值等于第一差值的0x00,再在拼接消息后填充0x06,返回执行判断拼接次数值是否等于消息分组计数阈值的步骤,直至得到长度为消息分组长度的目标消息。
66.本技术实施例提供的一种电子设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:判断拼接次数值是否等于消息分组计数阈值之后,若拼接次数值小于消息分组计数阈值,则计算消息分组长度与拼接消息间的第二差值,计算第二差值与预设字节的长度值间的第二比值,计算第二比值与2间的第二差值,在拼接消息后填充数值等于第二差值的0x00,再在拼接消息后填充0x06,返回执行判断拼接次数值是否等于消息分组计数阈值的步骤,直至得到长度为消息分组长度的目标消息。
67.本技术实施例提供的一种电子设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:若buffer缓存未满,则判定拼接得到的拼接消息的长度小于消息分组长度之后,若buffer缓存已满,则对拼接消息进行位序转换,得到初始消息的填充结果。
68.本技术实施例提供的一种电子设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如下步骤:初始消息包括进行sha-3运算的消息;目标比特位宽包括64bit;预设字节包括8比特的字节。
69.请参阅图7,本技术实施例提供的另一种电子设备中还可以包括:与处理器202连接的输入端口203,用于传输外界输入的命令至处理器202;与处理器202连接的显示单元204,用于显示处理器202的处理结果至外界;与处理器202连接的通信模块205,用于实现电子设备与外界的通信。显示单元204可以为显示面板、激光扫描使显示器等;通信模块205所采用的通信方式包括但不局限于移动高清链接技术(hml)、通用串行总线(usb)、高清多媒体接口(hdmi)、无线连接:无线保真技术(wifi)、蓝牙通信技术、低功耗蓝牙通信技术、基于ieee802.11s的通信技术。
70.本技术实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:获取待填充的初始消息;获取初始消息的填充参数,填充参数包括消息分组长度;按照目标比特位宽对初始消息进行比例位宽转换,得到相应的数据块;按照消息分组长度对数据块进行拼接,若拼接得到的拼接消息的长度小于消息分组长度,则基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息;对目标消息进行位序转换,得到初始消息的填充结果。
71.本技术实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:消息分组长度包括基于消息摘要长度确定的分组长度;将数据块移位寄存入预设的buffer缓存中进行拼接,buffer缓存的长度等于消息分组长度;若buffer缓存未满,则判定拼接得到的拼接消息的长度小于消息分组长度。
72.本技术实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:填充参数包括消息分组计数阈值,消息分组计数阈值包括消息分组长度与目标比特位宽的比值;将数据块移位寄存入预设的buffer缓存中进行拼接之后,记录buffer缓存中当前轮的拼接次数值;确定拼接次数值与消息分组计数阈值的比较结果,按照比较结果,基于预设字节对拼接消息进行填充,得到长度为消息分组长度的目标消息。
73.本技术实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:判断拼接次数值是否等于消息分组计数阈值;若拼接次数值等于消息分组计数阈值,则确定拼接消息中最后一次拼接的数据块与目标比特位宽间的第一长度差值,判断第一长度差值是否等于预设字节的长度值,若第一长度差值等于预设字节的长度值,则在拼接消息后填充0x86,得到长度为消息分组长度的目标消息。
74.本技术实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:判断第一长度差值是否等于预设字节的长度值之后,若第一长度差值大于预设字节的长度值,则在拼接消息后填充0x80,同时确定拼接消息中最后一次拼接的数据块与目标比特位宽间的第二长度差值,判断第二长度差值是否等于两个预设字节的长度值,若第二长度差值等于两个预设字节的长度值,则在拼接消息后填充0x06,返回执行判断拼接次数值是否等于消息分组计数阈值的步骤,直至得到长度为消息分组长度的目标消息。
75.本技术实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:判断第二长度差值是否等于两个预设字节的长度值之后,若第二长度差值大于两个预设字节的长度值,则计算第二长度差值与预设字节的长度值间的第一比值,计算第一比值与2间的第一差值,在拼接消息后填充数值等于第一差值的0x00,再在拼接消息后填充0x06,返回执行判断拼接次数值是否等于消息分组计数阈值的步骤,直至得到长度为消息分组长度的目标消息。
76.本技术实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:判断拼接次数值是否等于消息分组计数阈值之后,若拼接次数值小于消息分组计数阈值,则计算消息分组长度与拼接消息间的第二差值,计算第二差值与预设字节的长度值间的第二比值,计算第二比值与2间的第二差值,在拼接消息后填充数值等于第二差值的0x00,再在拼接消息后填充0x06,返回执行判断拼接次数值是否等于消息分组计数阈值的步骤,直至得到长度为消息分组长度的目标消息。
77.本技术实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:若buffer缓存未满,则判定拼接得到的拼接消息的长度小于消息分组长度之后,若buffer缓存已满,则对拼接消息进行位序转换,得到初始消息的填充结果。
78.本技术实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:初始消息包括进行sha-3运算的消息;目标比特位宽包括64bit;预设字节包括8比特的字节。
79.本技术所涉及的计算机可读存储介质包括随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质。
80.本技术实施例提供的一种消息填充装置、电子设备及计算机可读存储介质中相关部分的说明请参见本技术实施例提供的消息填充方法中对应部分的详细说明,在此不再赘述。另外,本技术实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
81.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
82.对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。