您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 【CN110138542A】一种SM3密码杂凑算法中消息填充的硬件实现方法【专利】
(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号(43)申请公布日(21)申请号201910225840.0(22)申请日2019.03.25(71)申请人电子科技大学地址611731四川省成都市高新区(西区)西源大道2006号(72)发明人李威 赵周 程筱舒 王忆文 (51)Int.Cl.H04L9/06(2006.01)(54)发明名称一种SM3密码杂凑算法中消息填充的硬件实现方法(57)摘要本发明属于安全技术领域,提出一种SM3密码杂凑算法中消息填充的硬件实现方法。本方法采用硬件描述语言构建消息填充状态机和基本运算单元,所述基本运算单元包括:移位运算单元、异或运算单元、比较单元,并且使用了乒乓操作完成数据的无缝缓冲与处理。本发明利用硬件处理速度快的特点,相比传统软件处理方法,减少了时间,并且模块利用率高,节省了硬件资源。权利要求书1页说明书3页附图1页CN110138542A2019.08.16CN110138542A1.一种SM3密码杂凑算法中消息填充的硬件实现方法,其特征在于,包括如下步骤:(1)采用硬件描述语言构建消息填充状态机和和基本运算单元,所述基本运算单元包括:移位运算单元、异或运算单元、比较单元;(2)所述消息填充状态机按照算法流程,通过调用移位运算单元、异或运算单元、比较单元,硬件实现了SM3密码杂凑算法中的消息填充。2.根据权利要求1所述的消息填充的硬件实现方法,其特征在于,所述硬件描述语言为Verilog。3.根据权利要求1所述的消息填充的硬件实现方法,其特征在于,所述消息填充的硬件实现方法的流程按照如下三个阶段进行实施:第一阶段:初始化赋值阶段,该阶段把相关消息赋值给寄存器u,v;第二阶段:第一次消息输入后的填充阶段,该阶段通过状态机来调用基本运算单元完成消息的填充,并根据是否有第二次消息输入来决定下一步的操作;第三阶段:第二次消息输入后的填充阶段,该阶段通过状态机来调用基本运算单元完成消息的填充,如果有第三次消息输入,则返回第二阶段,第三阶段输入此时可以等效于第一次消息输入。4.根据权利要求3所述的消息填充的硬件实现方法,其特征在于,所述的第一、第二、第三阶段按如下步骤实施:第一阶段:定义两个512比特的寄存器u和v,用来存储初始消息以及消息填充过程中的中间消息和处理完成的消息;定义每次输入消息的长度最多为256比特,如果超过256比特则分次输入,每次输入的消息长度为k;(1)将输入的消息存入寄存器u的高256位,将1比特“1”存入寄存器v的最高位,此时可分为两种情况:第二阶段:第一次输入消息即为全部消息,则把v右移k位,然后把u、v与k进行异或操作,其结果存储在寄存器u中;此时寄存器u中的值就是填充后的512比特消息;第一次输入消息不为全部消息,说明消息长度为256,则把第二次输入的消息存入u的低256位,后续处理见(2)、(3)、(4);第三阶段:(2)如果第二次的输入是最后一次消息,并且消息长度小于192,同时说明第二次的输入是最后一次消息,则把v右移k位,然后把u的低256位、v的高256位与k异或,其结果存储在寄存器u的低256位中;此时寄存器u中的值就是填充后的512比特消息;(3)如果第二次的输入是最后一次消息,并且消息长度大于192,则把v右移k位,然后把u的低256位与v的高256位异或,其结果存储在寄存器u的低256位中;把v的低64位与k异或,其结果存储在寄存器v的低64位中;此时寄存器u和v即为填充后的两个512比特消息;(4)如果第二次的输入不是最后一次消息,说明消息长度为256,此时寄存器u中的512比特消息是符合填充要求的第一个512比特消息,将其存入寄存器v中送入SM3密码杂凑算法中进行计算,并将寄存器u清零;第三次输入的消息可以看作第一次输入消息,重复第一阶段中的步骤进行填充,直到完成最后一次消息填充。权 利 要 求 书1/1页2CN110138542A2一种SM3密码杂凑算法中消息填充的硬件实现方法技术领域[0001]本发明属于安全技术领域,特别涉及一种SM3密码杂凑算法中消息填充的硬件实现方法。背景技术[0002]SM3密码杂凑算法是我国自主研制的一种哈希算法,可以把长度小于264的消息经过分组迭代后,转化成一个256比特的杂凑值。SM3密码杂凑算法适用于各种数字签名和消息验证,广泛应用于国内商用密码产品。[0003]国家密码管理局于2010年12月公布的SM3密码杂凑算法中,制定了SM3密码杂凑算法的计算步骤和方法。[0004]SM3密码杂凑算法的消息填充的步骤如下所示:[0005]首先假设消息m的长度为k比特,k小于264。首先将比特“1”添加到消息的末尾,再添加n个“0”,n是满足k+1+n≡448mod 512的最小的非负整数。然后在最后再添加一个64位比特串,该比特串是长度k的二进制表示。填充后的消息m’的比特长度为512的倍数。发明内容[0006]现有的SM3密码杂凑算法中的消息填充主要是通过软件来实现的,本发明提供一种硬件实现SM3密码杂凑算法中消息填充的方法,用以提高SM3密码杂凑模块的吞吐量,减少软件处理以及和硬件交互的时间。其具体方案如下:[0007]定义两个512比特的寄存器u和v,用来存储初始消息以及消息填充过程中的中间消息和处理完成的消息;[0008]定义每次输入消息的长度最多为256比特,如果超过256比特则分次输入,每次输入的消息长度为k;[0009](1)将输入的消息存入寄存器u的高256位,将1比特“1”存入寄存器v的最高位,此时可分为两种情况:[0010]第一次输入消息即为全部消息,则把v右移k位,然后把u、v与k进行异或操作,其结果存储在寄存器u中。此时寄存器u中的值就是填充后的512比特消息;[0011]第一次输入消息不为全部消息,说明消息长度为256,则把第二次输入的消息存入u的低256位,后续处理见(2)、(3)、(4);[0012](2)如果第二次的输入是最后一次消息,并且消息长度小于192,同时说明第二次的输入是最后一次消息,则把v右移k位,然后把u的低256位、v的高256位与k异或,其结果存储在寄存器u的低256位中。此时寄存器u中的值就是填充后的512比特消息;[0013](3)如果第二次的输入是最后一次消息,并且消息长度大于192,则把v右移k位,然后把u的低256位与v的高256位异或,其结果存储在寄存器u的低256位中;把v的低64位与k异或,其结果存储在寄存器v的低64位中。此时寄存器u和v即为填充后的两个512比特消息;[0014](4)如果第二次的输入不是最后一次消息,说明消息长度为256,此时寄存器u中的说 明 书1/3页3CN110138542A3512比特消息是符合填充要求的第一个512比特消息,将其存入寄存器v中送入SM3密码杂凑算法中进行计算,并将寄存器u清零。后续处理见(5);[0015]第三次输入的消息可以看作第一次输入消息,重复(2)中的步骤进行填充,直到完成最后一次消息填充;[0016]本发明的优点主要包括:[0017]1.消息填充速度快,主要运算均组合逻辑,计算延迟小;[0018]2.本发明运算资源高效可复用,可以应对可能出现的所有情况,极大的节省了硬件资源;[0019]3.本发明采用了乒乓操作完成数据的无缝缓冲与处理。附图说明[0020]图1为本发明的硬件结构示意图;[0021]图2为消息填充硬件实现的基本流程图。具体实施方式[0022]为了使本发明更便于理解,以下结合附图和具体实施方式来对本发明做进一步说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。[0023]本发明实例公开了一种SM3密码杂凑算法中消息填充的硬件实现方法。采用硬件描述语言构建消息填充状态机和基本运算单元。如图1所示,是本发明的硬件结构示意图,所述基本运算单元包括:移位运算单元、异或运算单元、比较单元,并且使用了乒乓操作完成数据的无缝缓冲与处理;[0024]如图2所示,是本发明硬件实现的流程图,所述消息填充状态机按照消息填充流程,通过调用基本运算单元完成消息的填充,最后根据不同情况会输出不同值。详述如下:[0025]定义两个512比特的寄存器u和v,用来存储初始消息以及消息填充过程中的中间消息和处理完成的消息;[0026]定义每次输入消息的长度最多为256比特,如果超过256比特则分次输入,每次输入的消息长度为k;[0027](1)将输入的消息存入寄存器u的高256位,将1比特“1”存入寄存器v的最高位,此时可分为两种情况:[0028]第一次输入消息即为全部消息,则把v右移k位,然后把u、v与k进行异或操作,其结果存储在寄存器u中。此时寄存器u中的值就是填充后的512比特消息;[0029]第一次输入消息不为全部消息,说明消息长度为256,则把第二次输入的消息存入u的低256位,后续处理见(2)、(3)、(4);[0030](2)如果第二次的输入是最后一次消息,并且消息长度小于192,同时说明第二次的输入是最后一次消息,则把v右移k位,然后把u的低256位、v的高256位与k异或,其结果存储在寄存器u的低256位中。此时寄存器u中的值就是填充后的512比特消息;[0031](3)如果第二次的输入是最后一次消息,并且消息长度大于192,则把v右移k位,然后把u的低256位与v的高256位异或,其结果存储在寄存器u的低256位中;把v的低64位与k异或,其结果存储在寄存器v的低64位中。此时寄存器u和v即为填充后的两个512比特消息;说 明 书2/3页4CN110138542A4[0032](4)如果第二次的输入不是最后一次消息,说明消息长度为256,此时寄存器u中的512比特消息是符合填充要求的第一个512比特消息,将其存入寄存器v中送入SM3密码杂凑算法中进行计算,并将寄存器u清零。后续处理见(5);[0033](5)第三次输入的消息可以看作第一次输入消息,重复(2)中的步骤进行填充,直到完成最后一次消息填充;[0034]以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。说 明 书3/3页5CN110138542A5图1图2说 明 书 附 图1/1页6CN110138542A6
本文标题:【CN110138542A】一种SM3密码杂凑算法中消息填充的硬件实现方法【专利】
链接地址:https://www.777doc.com/doc-6063043 .html