HMAC算法的实现方法、装置、电子设备及可读介质制造方法及图纸

技术编号:39054468 阅读:15 留言:0更新日期:2023-10-12 19:47
本发明专利技术公开了一种HMAC算法的实现方法、装置、电子设备及可读介质。本发明专利技术提供的HMAC算法的实现方法和装置,采用数据流水处理、HMAC和Hash资源复用的方法,不需要将密钥进行填充和异或等预处理或者消息进行填充之后才能进行Hash运算,而是通过将密钥的预处理或者消息填充和Hash运算同时进行;并且Hash运算采用数据流水处理,消除数据的等待时间;另外,本发明专利技术还复用HMAC和Hash之间的数据自动填充模块和寄存器存储单元,这样不仅可以加快HMAC的运算速度,而且可以减小HMAC的实现面积。而且可以减小HMAC的实现面积。而且可以减小HMAC的实现面积。

【技术实现步骤摘要】
HMAC算法的实现方法、装置、电子设备及可读介质


[0001]本专利技术是关于加密算法
,特别是关于一种HMAC算法的实现方法、装置、电子设备及可读介质。

技术介绍

[0002]MAC(Message Authentication Codes),消息认证码是一种基于密钥提供消息完整性检查的机制。HMAC(Keyed

Hash Message Authentication Code)是基于加密Hash函数的MAC机制,它的加密强度取决于底层Hash函数的属性。HMAC可以与任何迭代加密Hash函数一起使用,比如SHA1、SHA2、SHA3、MD5。实现HMAC时可以将Hash函数视为“黑盒”,在Hash函数基础上增加HMAC控制逻辑就可以实现HMAC。然而,在嵌入式应用中,通常要求HMAC的实现速度快且面积小。
[0003]因此,针对上述技术问题,有必要提供一种新的HMAC算法的实现方法、装置、电子设备及可读介质。

技术实现思路

[0004]本专利技术的目的在于提供一种HMAC算法的实现方法、装置、电子设备及可读介质,其HMAC的实现不仅速度快,而且面积小。
[0005]为实现上述目的,本专利技术提供的技术方案如下:
[0006]第一方面,本专利技术提供了一种HMAC算法的实现方法,其包括:
[0007]将密钥写入第一存储单元,读取所述第一存储单元中的密钥进行ipad哈希运算,得到第一中间结果写入第二存储单元;
[0008]读取所述第一存储单元中的密钥进行opad哈希运算得到第二中间结果,读取所述第二存储单元中的第一中间结果作为哈希运算初始值,将所述第二中间结果写入所述第二存储单元,在进行所述opad哈希运算的过程中,将消息写入所述第一存储单元;
[0009]以所述第一中间结果作为哈希运算初始值,读取所述第一存储单元中的消息进行哈希运算,得到第三中间结果写入所述第一存储单元;
[0010]以所述第二存储单元中的第二中间结果作为哈希运算初始值,读取所述第一存储单元中的第三中间结果进行哈希运算。
[0011]在一个或多个实施方式中,将密钥写入第一存储单元,读取所述第一存储单元中的密钥进行ipad哈希运算,包括:
[0012]当密钥的长度小于或等于第一存储单元的容量时,将密钥一次性写入第一存储单元,读取所述第一存储单元中的密钥进行ipad哈希运算;
[0013]当密钥的长度大于第一存储单元的容量时,将密钥分多次写入第一存储单元,以在先写入的密钥的哈希计算结果为在后写入的密钥的哈希初始值,读取写入所述第一存储单元中的密钥进行哈希运算,密钥哈希运算完成后,读取最后一次写入第一存储单元的密钥的哈希计算结果进行ipad哈希运算。
[0014]在一个或多个实施方式中,将消息写入所述第一存储单元,包括:
[0015]当消息的长度小于或等于所述第一存储单元的容量时,将消息一次性写入第一存储单元;
[0016]当消息的长度小于或等于第一存储单元的容量时,将消息分多次写入所述第一存储单元。
[0017]第二方面,本专利技术提供了一种HMAC算法的实现方法,其包括:
[0018]将密钥写入第一存储单元和第二存储单元,读取所述第一存储单元中的密钥进行ipad哈希运算,得到第一中间结果,在进行所述ipad哈希运算的过程中,将消息写入所述第一存储单元;
[0019]以所述第一中间结果作为哈希运算初始值,读取所述第一存储单元中的消息进行哈希运算,得到第二中间结果写入所述第二存储单元,同时将所述第二存储单元中的密钥写入所述第一存储单元;
[0020]读取所述第一存储单元中的密钥进行opad哈希运算,得到第三中间结果,将所述第二存储单元中的所述第二中间结果写入所述第一存储单元;
[0021]以所述第三中间结果作为哈希运算初始值,读取所述第一存储单元中的所述第二中间结果进行哈希运算。
[0022]在一个或多个实施方式中,将密钥写入第一存储单元,读取所述第一存储单元中的密钥进行ipad哈希运算,包括:
[0023]当密钥的长度小于或等于第一存储单元的容量时,将密钥一次性写入第一存储单元,读取所述第一存储单元中的密钥进行ipad哈希运算;
[0024]当密钥的长度大于第一存储单元的容量时,将密钥分多次写入第一存储单元,以在先写入的密钥的哈希计算结果为在后写入的密钥的哈希初始值,读取写入所述第一存储单元中的密钥进行哈希运算,密钥的哈希运算完成后,读取最后一次写入第一存储单元的密钥的哈希计算结果进行ipad哈希运算。
[0025]第三方面,本专利技术提供了一种HMAC算法的实现装置,其包括:HMAC控制单元、第一存储单元、第二存储单元、哈希单元和多路复用单元;
[0026]所述HMAC控制单元控制所述多路复用单元将密钥写入所述第一存储单元,所述哈希单元读取所述第一存储单元中的密钥进行ipad哈希运算得到第一中间结果,所述HMAC控制单元控制所述多路复用单元将所述第一中间结果写入所述第二存储单元;
[0027]所述哈希单元读取所述第一存储单元中的密钥进行opad哈希运算得到第二中间结果,所述哈希单元读取所述第二存储单元中的第一中间结果作为哈希运算初始值,所述HMAC控制单元控制所述多路复用单元将所述第二中间结果写入所述第二存储单元,在进行所述opad哈希运算的过程中,所述HMAC控制单元控制所述多路复用单元将消息写入所述第一存储单元;
[0028]所述哈希单元以所述第一中间结果作为哈希运算初始值,并读取所述第一存储单元中的消息进行哈希运算得到第三中间结果,所述HMAC控制单元控制所述多路复用单元将将所述第三中间结果写入所述第一存储单元;
[0029]所述哈希单元读取所述第二存储单元中的第二中间结果作为哈希运算初始值,并读取所述第一存储单元中的第三中间结果进行哈希运算。
[0030]在一个或多个实施方式中,所述哈希单元包括:
[0031]预处理模块,用于对消息和密钥进行填充,并将填充后的密钥与ipad或opad进行异或;
[0032]计算模块,用于对数据进行哈希计算。
[0033]在一个或多个实施方式中,所述多路复用单元包括:
[0034]第一多路复用器,用于将密钥和密钥的哈希运算结果其中之一写入所述第一存储单元;
[0035]第二多路复用器,用于将消息和第三中间结果其中之一写入所述第一存储单元;
[0036]第三多路复用器,用于将第一中间结果和第二中间结果其中之一写入所述第二存储单元;
[0037]第四多路复用器,用于将ipad和opad其中之一写入所述预处理模块。
[0038]第四方面,本专利技术提供了一种HMAC算法的实现装置,其包括:HMAC控制单元、第一存储单元、第二存储单元、哈希单元和多路复用单元;
[0039]所述HMAC控制单元控制所述多路复用单元将密钥写入第一存储单元和第二存储单元,所述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种HMAC算法的实现方法,其特征在于,包括:将密钥写入第一存储单元,读取所述第一存储单元中的密钥进行ipad哈希运算,得到第一中间结果写入第二存储单元;读取所述第一存储单元中的密钥进行opad哈希运算得到第二中间结果,读取所述第二存储单元中的第一中间结果作为哈希运算初始值,将所述第二中间结果写入所述第二存储单元,在进行所述opad哈希运算的过程中,将消息写入所述第一存储单元;以所述第一中间结果作为哈希运算初始值,读取所述第一存储单元中的消息进行哈希运算,得到第三中间结果写入所述第一存储单元;以所述第二存储单元中的第二中间结果作为哈希运算初始值,读取所述第一存储单元中的第三中间结果进行哈希运算。2.如权利要求1所述的HMAC算法的实现方法,其特征在于,将密钥写入第一存储单元,读取所述第一存储单元中的密钥进行ipad哈希运算,包括:当密钥的长度小于或等于第一存储单元的容量时,将密钥一次性写入第一存储单元,读取所述第一存储单元中的密钥进行ipad哈希运算;当密钥的长度大于第一存储单元的容量时,将密钥分多次写入第一存储单元,以在先写入的密钥的哈希计算结果为在后写入的密钥的哈希初始值,读取写入所述第一存储单元中的密钥进行哈希运算,密钥哈希运算完成后,读取最后一次写入第一存储单元的密钥的哈希计算结果进行ipad哈希运算。3.如权利要求1所述的HMAC算法的实现方法,其特征在于,将消息写入所述第一存储单元,包括:当消息的长度小于或等于所述第一存储单元的容量时,将消息一次性写入第一存储单元;当消息的长度小于或等于第一存储单元的容量时,将消息分多次写入所述第一存储单元。4.一种HMAC算法的实现方法,其特征在于,包括:将密钥写入第一存储单元和第二存储单元,读取所述第一存储单元中的密钥进行ipad哈希运算,得到第一中间结果,在进行所述ipad哈希运算的过程中,将消息写入所述第一存储单元;以所述第一中间结果作为哈希运算初始值,读取所述第一存储单元中的消息进行哈希运算,得到第二中间结果写入所述第二存储单元,同时将所述第二存储单元中的密钥写入所述第一存储单元;读取所述第一存储单元中的密钥进行opad哈希运算,得到第三中间结果,将所述第二存储单元中的所述第二中间结果写入所述第一存储单元;以所述第三中间结果作为哈希运算初始值,读取所述第一存储单元中的所述第二中间结果进行哈希运算。5.如权利要求1所述的HMAC算法的实现方法,其特征在于,将密钥写入第一存储单元,读取所述第一存储单元中的密钥进行ipad哈希运算,包括:当密钥的长度小于或等于第一存储单元的容量时,将密钥一次性写入第一存储单元,读取所述第一存储单元中的密钥进行ipad哈希运算;
当密钥的长度大于第一存储单元的容量时,将密钥分多次写入第一存储单元,以在先写入的密钥的哈希计算结果为在后写入的密钥的哈希初始值,读取写入所述第一存储单元中的密钥进行哈希运算,密钥哈希运算完成后读取最后一次写入第一存储单元的密钥的哈希计算结果进行ipad哈希运算。6.一种HMAC算法的实现装置,其特征在于,包括:HMAC控制单元、第一存储单元、第二存储单元、哈希单元和多路复用单元;所述HMAC控制单元控制所述多路复用单元将密钥写入所述第一存储单元,所述哈希单元读取所述第一存储单元中的密钥进行ipad哈希运算得到第一中间结果,所述HMAC控制单元控制所述多路复用单元将所述第一中间结果写入所述第二存储单元;所述哈希单元读取所述第一存储单元中的密钥进行opad哈希运算得到第二中间结果,所述哈希单元读取所述第二存储单元中的第一中间...

【专利技术属性】
技术研发人员:王权胜
申请(专利权)人:思瑞浦微电子科技上海有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1