[发明专利]一种实现多种哈希算法可重构的方法和系统有效
申请号: | 202010174565.7 | 申请日: | 2020-03-12 |
公开(公告)号: | CN111464308B | 公开(公告)日: | 2022-07-01 |
发明(设计)人: | 张伟;杨彦波;黄元波;刘政林;杨东海 | 申请(专利权)人: | 烽火通信科技股份有限公司;武汉飞思灵微电子技术有限公司;中国信息通信科技集团有限公司 |
主分类号: | H04L9/32 | 分类号: | H04L9/32 |
代理公司: | 武汉智权专利代理事务所(特殊普通合伙) 42225 | 代理人: | 孟欢 |
地址: | 430000 湖北省武*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 多种 算法 可重构 方法 系统 | ||
1.一种实现多种哈希算法可重构的方法,其特征在于,包括:
接收待认证数据并分成多个512bit的消息块,存储SHA-1、SM3、SHA-224以及SHA-256四种算法的初始值,存储四种算法迭代压缩需要的常量数据Kt,t为迭代压缩的轮数;
将每个所述消息块进行扩展,SHA-1算法扩展成80个32bit的扩展数据、SHA-224或SHA-256算法扩展成64个32bit的扩展数据,得到消息扩展值Wt;SM3算法扩展成132个32bit的扩展数据,得到消息扩展值Wt和Wt';
以选择的算法对应的初始值开始,结合所述Kt、Wt和Wt',对每个消息块进行64轮或80轮迭代压缩运算,得到该消息块的中间哈希值;
以上一个消息块的中间哈希值作为下一个消息块的迭代初始值,再次计算中间哈希值,直至所有待认证数据计算完毕;
所述中间哈希值的计算方法包括:
根据寄存器A、寄存器E和Kt的值,计算中间值SS1和SS2;
若使用SM3算法,则根据寄存器Wt、寄存器H、寄存器E、寄存器F、寄存器G和中间值SS1,计算得到中间值TT2和下一轮寄存器E的值;若使用SHA-1算法,则根据Kt和Wt的值、寄存器E、寄存器B、寄存器C、寄存器D和寄存器A的值,计算得到中间值Y1和中间值Y2,供给第二计算通路使用;若使用SHA-224或SHA-256算法,则根据Kt和Wt的值、寄存器H、寄存器E、寄存器F、寄存器G和寄存器D的值,计算得到中间值Y1、中间值Y2中间值TT2和下一轮寄存器E的值;
根据选择的算法对应的Wt'、寄存器A、寄存器B、寄存器C、寄存器D、中间值Y1、中间值Y2和SS2,计算中间值TT1。
2.如权利要求1所述的实现多种哈希算法可重构的方法,其特征在于,所述接收待认证数据并分成多个512bit的消息块包括:
待认证数据按照32bit分组时,接收16组待认证数据之后,将累计接收到的待认证数据拼接成512bit消息块;
或者,待认证数据按照64bit分组时,接收8组待认证数据之后,将累计接收到的待认证数据拼接成512bit消息块。
3.如权利要求2所述的实现多种哈希算法可重构的方法,其特征在于,对待认证数据中消息块的拼接包括:
若最后拼接的数据串长度小于448bit,则在该数据串末尾填充一个1和若干个0,使数据串长度为448bit,以64bit位宽的数据填充到数据串末尾,构成最后一个512bit位宽的消息块;
若最后拼接的数据串长度大于等于448bit且小于512bit,则在该数据串末尾填充一个1和若干个0至512bit长度,构成倒数第二个512bit消息块,然后再填充448个0,最后将64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块;
若最后拼接的数据串长度等于512bit,将此数据串作为倒数第二个消息块,然后再填充一个1和447个0,最后将64bit位宽的数据填充到数据串末尾,构成最后一个512bit消息块;
所述64bit位宽的数据是将待认证数据长度通过二进制表示,若不足64bit位宽时,在高位补0,使其满足64bit位宽。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于烽火通信科技股份有限公司;武汉飞思灵微电子技术有限公司;中国信息通信科技集团有限公司,未经烽火通信科技股份有限公司;武汉飞思灵微电子技术有限公司;中国信息通信科技集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010174565.7/1.html,转载请声明来源钻瓜专利网。