首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何计算hmac和cmac

如何计算hmac和cmac
EN

Cryptography用户
提问于 2021-04-02 11:36:50
回答 1查看 408关注 0票数 0

我正在寻找一个简单的描述,它告诉我如何计算hmac和cmac。到目前为止,我发现了以下情况:

代码语言:javascript
运行
复制
cmac = aes_encryption(hash(message), key)
hmac = hash(key, message)

区别似乎是cmacs在哈希函数之外使用对称加密,而hmacs处理散列函数本身中的密钥。对吗?

在某些情况下,cmac应该被使用而不是hmac?

EN

回答 1

Cryptography用户

发布于 2021-04-02 13:09:02

区别似乎是cmacs在哈希函数之外使用对称加密,而hmacs处理散列函数本身中的密钥。对吗?

在CMAC中没有“正常”的抗碰撞散列。详情见下文。对于HMAC,利用哈希函数的内部元素来处理密钥,但是它可以将哈希函数用作黑匣子。

RFC 2104NIST FIPS 198-1对HMAC进行标准化。HMAC的思想是开发哈希函数的通用梅尔克-达格路结构。这是通过首先使用预处理的键调用压缩函数来完成的,然后使用该状态正常地处理消息。最后,上一步的输出再次以与前一步中的原始消息相同的方式被用作消息,尽管这次使用的是不同的派生步骤。

CMAC是在NIST SP 800-38B中定义的,它有一个很好的图来解释模式:

其中\oplus表示异或,K,K1,K2是块密码,MSB操作是截断,D8是通过多项式域加倍从主输入键导出的密钥。消息被划分为最多CIPH的块大小的块。

在某些情况下,cmac应该被使用而不是hmac?

是的,典型的建议是,如果您有一个密码的硬件加速,或者您希望最小化代码大小,并提供依赖于代码中的分组密码的其他功能。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/89154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档