举一个CMAC子密钥生成的例子
时间: 2023-07-20 21:32:30 浏览: 41
假设我们有一个128位的主密钥K,我们需要生成两个子密钥K1和K2,可以按照以下步骤进行:
1. 首先,将主密钥K分成两个相等长度的部分K1和K2:
```
K1 = K[0] || K[1] || ... || K[63]
K2 = K[64] || K[65] || ... || K[127]
```
2. 对K1进行如下处理:
- 如果K1的最高位为0,那么将K1左移一位:
```
K1 = K1 << 1 = K[1] || K[2] || ... || K[63] || 0
```
- 如果K1的最高位为1,那么将K1左移一位并与一个固定值Rb进行异或操作:
```
K1 = (K1 << 1) ^ Rb = K[1] || K[2] || ... || K[63] || 1
```
3. 根据K1的最高位,对K2进行如下处理:
- 如果K1的最高位为0,那么将K2左移一位:
```
K2 = K2 << 1 = K[65] || K[66] || ... || K[127] || 0
```
- 如果K1的最高位为1,那么将K2左移一位并与Rb进行异或操作:
```
K2 = (K2 << 1) ^ Rb = K[65] || K[66] || ... || K[127] || 0x87
```
4. 根据K1的最高位,再次对K1进行如下处理:
- 如果K1的最高位为0,那么将K1左移一位:
```
K1 = K1 << 1 = K[2] || K[3] || ... || K[63] || 0
```
- 如果K1的最高位为1,那么将K1左移一位并与Rb进行异或操作:
```
K1 = (K1 << 1) ^ Rb = K[2] || K[3] || ... || K[63] || 2
```
5. 根据K1的最高位,再次对K2进行如下处理:
- 如果K1的最高位为0,那么将K2左移一位:
```
K2 = K2 << 1 = K[66] || K[67] || ... || K[127] || 0
```
- 如果K1的最高位为1,那么将K2左移一位并与Rb进行异或操作:
```
K2 = (K2 << 1) ^ Rb = K[66] || K[67] || ... || K[127] || 0x87
```
6. 重复步骤4-5,直到生成所需数量的子密钥。在这个例子中,我们只需要生成两个子密钥,因此此时我们得到的K1和K2就是我们需要的子密钥。
最终,我们得到的子密钥是:
```
K1 = 0x6cd02513b5f71c71f4d8faff9eb9e67d
K2 = 0x8a5296cff5d008c3c3f83a7a4ce8311f
```
这两个子密钥可以用于计算消息的MAC值。
相关推荐
![](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)