消息认证码(Message Authentication Code, MAC)的计算如下:
auth_code = MAC(key, msg)
其行为类似于哈希函数,key和msg发生任何一点微小的变化都将生成完全不同的auth_code。
用例
数据完整性
接收方可以通过验证MAC来确定消息自发送以来是否被更改过。流程如下:

- 通信双方实现共享一个密钥key
- 双方发消息msg,附带一个auth_code
- 双方可以通过key和msg来校验auth_code,从而判断msg是否被篡改
身份认证
MAC是通过发送方和接收方共享的密钥生成的。因此,一个有效的MAC能够向接收方证实消息确实来自于持有该共享密钥的发送方。
基于MAC的PRG
next_seed = MAC(salt, seed)