完整性算法128-EIA3
时间: 2023-12-10 13:35:47 浏览: 56
完整性算法128-EIA3是祖冲之算法集中的一种完整性保护算法,用于保护数据在传输过程中的完整性。它使用128位密钥和128位初始化向量(IV)来生成消息验证码(MAC),以验证数据是否被篡改。具体来说,它使用AES-128算法和CBC模式进行加密,并使用HMAC-SHA-256算法生成MAC。在发送方,数据被分成若干个块,每个块使用AES-128算法和CBC模式进行加密,然后将加密后的块与前一个块的MAC一起使用HMAC-SHA-256算法生成新的MAC。在接收方,接收到的数据被分成若干个块,每个块使用AES-128算法和CBC模式进行解密,然后将解密后的块与前一个块的MAC一起使用HMAC-SHA-256算法生成新的MAC,并与接收到的MAC进行比较,以验证数据是否被篡改。
代码示例:
```python
import hmac
from Crypto.Cipher import AES
# 初始化向量
iv = b'0123456789abcdef'
# 密钥
key = b'0123456789abcdef0123456789abcdef'
# 数据
data = b'Hello, world!'
# 加密
cipher = AES.new(key, AES.MODE_CBC, iv)
encrypted_data = cipher.encrypt(data)
# 计算MAC
h = hmac.new(key, digestmod='sha256')
h.update(iv + encrypted_data)
mac = h.digest()
# 发送数据和MAC
send_data = iv + encrypted_data + mac
# 接收数据和MAC
recv_data = b'0123456789abcdef' + encrypted_data + mac
# 解密
cipher = AES.new(key, AES.MODE_CBC, recv_data[:16])
decrypted_data = cipher.decrypt(recv_data[16:-32])
# 验证MAC
h = hmac.new(key, digestmod='sha256')
h.update(recv_data[:16] + recv_data[16:-32])
if h.digest() == recv_data[-32:]:
print('Data is not tampered with')
else:
print('Data is tampered with')
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)