NOTE
- 可用于数据完整性校验和保证消息来源合法性,算法强度取决于分组算法强度、消息鉴别码长度以及消息鉴别算法
- 参考GB/T 15852.1-2008 信息技术 安全技术 消息鉴别码 第1部分:采用分组密码的机制
- MAC长度大于零并且小于等于密码算法分组长度
- 如果消息既需要加密有需要校验完整性,必须使用不同密钥进行运算
- 当前硬件厂商多是采用对称加密算法结合CBC模式实现,后取最后一块密文作为mac值
原理
- 消息填充:需要将消息填充到密码算法分组长度的整数倍
- 数据分割:按照密码算法分组长度切割
- 初始变换:获得一个初始值,类似cbc模式中iv值
- 迭代分组密码算法:对切割各分块进行密码运算
- 输出变化:对迭代密码算法结果进行处理,获得最完整mac值
- 截断操作:从左边截断指定长度数据作为mac值
- mac算法+填充方式=以上步骤