HMAC-SHA256加解密使用及例子
时间: 2024-10-09 10:03:12 浏览: 30
HMAC-SHA256是一种常用的哈希消息认证码,它结合了HMAC(基于哈希的认证码)和SHA-256(安全散列函数)。其工作流程通常是这样的:
1. **生成密钥**:首先,你需要一个密钥,这可以是任意长度的二进制字符串,通常建议使用至少256位(32字节)。
2. **封装数据**:使用提供的明文信息(message),以及上述的密钥,通过哈希算法SHA-256计算出一个固定大小的摘要(digest)。
3. **附加身份标识**:为了区分不同的消息,可以在原始哈希值前添加消息的身份标识,例如通过将密钥与其拼接再哈希。
4. **创建HMAC**:再次使用SHA-256哈希这个拼接后的字符串,得到最终的HMAC。
5. **验证**:当接收端收到消息并想要确认其完整性和来源时,会按照同样的步骤生成HMAC,并对比两者是否一致。如果匹配,说明消息未被篡改且来自正确的源。
例子(Python使用hashlib库):
```python
import hashlib
from hmac import HMAC
# 假设我们有一个密钥key和明文msg
key = b'my_secret_key'
msg = b'some_data_to_authenticate'
# 创建HMAC-SHA256实例
hmac_obj = HMAC(key, msg, hashlib.sha256)
# 计算HMAC
hmac_digest = hmac_obj.digest()
# 发送明文和HMAC一起
encrypted_msg = msg + hmac_digest
# 接收端验证
recovered_hmac = HMAC(key, encrypted_msg[:len(msg)], hashlib.sha256).digest()
if hmac_digest == recovered_hmac:
print("Message is authenticated.")
```
阅读全文