AES128CMAC算法
时间: 2024-05-27 07:06:48 浏览: 18
AES128CMAC算法是一种基于AES算法的消息认证码算法,它可以在保证消息完整性的同时,防止篡改和重放攻击。具体实现方式是对消息进行AES加密,并通过CMAC(Cipher-based MAC)算法生成一个固定长度的校验值。
具体步骤如下:
1. 对消息进行填充,使其长度是AES分组长度的整数倍(通常是16字节)。
2. 将填充后的消息分组,最后一组不足一个分组长度则需要填充。
3. 初始化一个空的128位缓冲区,并使用AES算法加密第一个分组得到结果。将此结果作为下一次AES加密的输入。
4. 对接下来的所有分组使用AES算法进行加密,并将结果与前面得到的结果异或,得到最终的校验值。
相关问题
AES128 CMAC算法的安全性如何?
AES128 CMAC算法是一种安全性较高的消息认证码算法。它采用AES加密算法和CMAC算法相结合,可以有效地保证消息的完整性和真实性,防止被篡改。同时,由于CMAC算法只用到了加密,没有用到解密,因此它一般采用对称密钥,这样可以提高加密和解密的效率。总的来说,AES128 CMAC算法是一种安全性较高、效率较高的消息认证码算法,被广泛应用于网络通信、数据传输等领域。
AES128的CMAC算法
AES128的CMAC算法是一种消息认证码算法,它基于AES128加密算法,用于验证消息的完整性和真实性。CMAC算法可以用于各种应用程序,例如网络安全,数字版权管理和金融交易等。
CMAC算法的步骤如下:
1. 初始化:选择一个密钥K,并将其用于初始化算法。
2. 填充:将消息M填充到一个完整的AES块大小,如果消息长度不足,则填充0x80和0x00。
3. 生成子密钥:使用AES加密算法生成两个子密钥K1和K2。
4. 处理消息:使用AES加密算法和子密钥K1和K2处理填充后的消息M。
5. 生成CMAC:使用AES加密算法和子密钥K1和K2生成CMAC。
下面是一个使用Python实现AES128的CMAC算法的例子:
```python
from Crypto.Cipher import AES
import binascii
def generate_subkeys(key):
cipher = AES.new(key, AES.MODE_ECB)
L = cipher.encrypt(bytes.fromhex('00000000000000000000000000000000'))
if int.from_bytes(L, byteorder='big') & 0x80:
K1 = ((int.from_bytes(L, byteorder='big') << 1) ^ 0x1B) % 2**128
else:
K1 = (int.from_bytes(L, byteorder='big') << 1) % 2**128
if K1 & 0x80:
K2 = ((K1 << 1) ^ 0x1B) % 2**128
else:
K2 = (K1 << 1) % 2**128
return (K1.to_bytes(16, byteorder='big'), K2.to_bytes(16, byteorder='big'))
def cmac(key, message):
K1, K2 = generate_subkeys(key)
cipher = AES.new(key, AES.MODE_ECB)
n = len(message)
if n == 0:
return binascii.hexlify(cipher.encrypt(bytes.fromhex('00000000000000000000000000000000')))
elif n % 16 == 0:
last_block = bytes.fromhex(message[n-16:n])
xor_block = K1
else:
last_block = message[n-n%16:n].ljust(16, b'\0')
last_block = bytes([last_block[i] ^ K2[i] for i in range(16)])
xor_block = K2
cipher_text = cipher.encrypt(xor_block + last_block)
return binascii.hexlify(cipher_text)
```
相关推荐
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.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)