消息认证码(MAC)的实现原理

一般密码相关的算法,个人是很难实现的,我们可以参照权威机构提供的方案,我想说美国标准与技术研究院 ,NIST(National Institute of Standards and Technology)。

今天谈到的MAC,使用NIST提供的公开800-38B算法文档。这个MAC算法是基于对称密钥块算法,故称之为CMAC,还是使用了AES。

算法原理:

1,根据输入的key,产生两个子key

2,产生MAC值。

具体步骤:

产生sub key1与key2过程

1. Let  L = CIPHK(0b).

2. If MSB1(L) = 0, then K1 = L << 1;Else K1 = (L << 1) ⊕ Rb; see Sec. 5.3 for the definition of Rb.

3. If MSB1(K1) = 0, then K2 = K1 << 1;Else K2 = (K1 << 1) ⊕ Rb.

4. Return K1, K2.

其中CIPHK就是就是利用key对16字节的0进行对称加密。

产生CMAC的过程

1. Apply the subkey generation process in Sec. 6.1 to K to produce K1 and K2.

2. If Mlen = 0, let n = 1; else, let n = ?Mlen/b?.

3. Let M1, M2, ... , Mn-1, Mn * denote the unique sequence of bit strings such that M =M1 || M2 || ... || Mn-1 || Mn*, where M1, M2,..., Mn-1 are complete blocks.2

4. If Mn* is a complete block, let Mn = K1 ⊕ Mn*; else, let Mn = K2 ⊕ (Mn*||10j),where j = nb-Mlen-1.

5. Let C0 = 0b.

6. For i = 1 to n, let Ci = CIPHK(Ci-1 ⊕ Mi).

7. Let T = MSBTlen(Cn).

8. Return T.

消息认证码(MAC)的实现原理,码迷,mamicode.com

时间: 2024-08-29 21:24:51

消息认证码(MAC)的实现原理的相关文章

密码学初级教程(五)消息认证码MAC-Message Authentication Code

密码学家工具箱中的6个重要的工具: 对称密码 公钥密码 单向散列函数 消息认证码 数字签名 伪随机数生成器 MAC能识别出篡改和伪装,也就是既可以确认消息的完整性,也可以进行认证. 消息认证码的输入包括任意长度的消息和一个发送者与接受者之间共享的密钥,它可以输出固定长度的数据,这个数据就是MAC. 消息认证码是一种与密钥相关联的单向散列函数. 消息认证码的应用实例 SWIFT(Society for Wordwide Interbank Financial Telecommunication,环

密码学初级教程(二)公钥密码RSA与单向散列函数与消息认证码

求离散对数非常困难 RSA是Ron Rivest/Adi Shamir/Leonard Adleman的姓氏首字母组成. RSA可以被用于公钥密码和数字签名. RSA加密:密文=明文EmodN(E和N为公钥) RSA解密:明文=密文DmodN(D和N为私钥) 对RSA的破解: 暴力破解:暴力破解的难度会随着D的长度增加而变大,当D足够长时,就不可能在现实的时间内通过暴力破解找出D. 混合密码系统:用对称密码提高速度,用公钥密码保护会话密钥 混合密码系统的组成机制: 用对称密码加密消息 通过伪随机

关于消息认证码

我的认识 消息认证码 英文为Message Authentication Code,也称消息识别码等不同称呼.其主要功能是验证消息的真实性. 消息认证模型如下: HMAC(Hash-based Message Authentication Code) HMAC是一种使用单向散列函数构建MAC的方法,其中H就是Hash的意思. HMAC中所使用的单向散列函数并不仅限于一种,任何高强度的单向散列函数都可以被用于HMAC,如果将来设计出的新的单向散列函数,也同样可以使用. 使用SHA-1.SHA-22

HMAC哈希消息认证码

收藏 137 14 hmac 编辑 HMAC是密钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出. 中文名 哈希消息认证码 外文名 Hash-based Message Authentication Code 缩    写 HMAC 概述  HMAC是密钥相关的哈希运算 运算作用 验证TPM接受的授权数 目录 1 简介 ? 运算作用 ? 算法表示 ? HMAC运算步骤 ? HMAC的应用 2 典型应用 ? 认证流程 ? 安全性浅析 简介

消息认证概述

在网络环境中的攻击类型 消息保密性范畴: 1.泄密 2.传输分析 消息认证/数字签名:    3.伪装 4.内容修改 插入/删除/转换/修改(消息内容) 5.顺序修改 插入/删除/重排(以消息为单位) 6.计时修改  延时/重播 数字签名:   7.发送方否认 8.接收方否认 消息认证函数 该函数用来产生认证符,可分成三类 1.Hash函数--以Hash值为认证符 2.消息加密--以整个信息加密后的密文作为认证符 3.消息认证符(MAC)--以消息和密钥作输入,产生定长值作为认证符  消息加密

转: MAC认证码的说明

转: http://blog.sina.com.cn/s/blog_4940e1fc01012vk3.html MAC(Message Authentication Code) 消息认证码(带密钥的Hash函数):密码学中,通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具.构造方法由M.Bellare提出,安全性依赖于Hash函数,故也称带密钥的Hash函数.消息认证码是基于密钥和消息摘要所获得的一个值,可用于数据源发认证和完整性校验. 在发送数据之前,发送方首先使用通信双方协商好的

【Spark Core】TaskScheduler源码与任务提交原理浅析2

引言 上一节<TaskScheduler源码与任务提交原理浅析1>介绍了TaskScheduler的创建过程,在这一节中,我将承接<Stage生成和Stage源码浅析>中的submitMissingTasks函数继续介绍task的创建和分发工作. DAGScheduler中的submitMissingTasks函数 如果一个Stage的所有的parent stage都已经计算完成或者存在于cache中,那么他会调用submitMissingTasks来提交该Stage所包含的Tas

SIP协议应答消息状态码详解

SIP应答消息状态码与功能 类型 状态码 状态说明 临时应答(1XX) 100 Trying 正在处理中 180 Ringing 振铃 181 call being forwarder 呼叫正在前向 182 queue 排队 181* session progress 会话进行 会话成功(2XX) 200 OK 会话成功 重定向(3XX) 300 multiple 多重选择 301 moved permanently 永久移动 302 moved temporaily 临时移动 305 use

HMAC加密的消息摘要码

HMAC(Hash Message Authentication Code)哈希消息授权码,它在消息摘要算法(例如MD5,SHA系列算法)的基础上,使用密钥对消息摘要进行加密.它相当于一个马甲,内里可以使用MD5,SHA1,SHA256,SHA384,SHA512等Message Digest算法,在生成的消息摘要的基础上再多一道加密的工序.所以HMAC包括,HmacMD5,HmacSHA1,HmacSHA384,HmacSHA512等种类.正是因为HMAC只是一个马甲,它才有了很大的灵活性,底