已知明文m=computer,密钥k=program。用DES算法求第一轮之后的结果
时间: 2024-05-30 10:16:12 浏览: 92
首先,将明文m和密钥k转换成二进制形式:
明文m = 01100011 01101111 01101101 01110000 01110101 01110100 01100101 01110010
密钥k = 01110000 01110010 01101111 01100111 01110010 01100001 01101101
接下来,对密钥k进行置换选择1(PC-1):
密钥k' = 1111000 1001100 0001111 1010101 0110010 0100001 0000011
然后将密钥k'分为左右两部分:
左半部分C0 = 1111000 1001100 0001111
右半部分D0 = 1010101 0110010 0100001 0000011
接下来进行16轮迭代。每一轮的过程如下:
1. 左移
将左半部分和右半部分分别左移1位得到:
C1 = 1110001 0011000 0011110
D1 = 0101010 1100100 1000010 0000110
2. 置换选择2
将C1和D1连接起来得到56位的序列,然后对其进行置换选择2(PC-2),得到48位的子密钥K1。
3. 扩展置换
将右半部分D1进行扩展置换(E盒置换),得到48位的序列。
4. 异或
将扩展置换的结果和子密钥K1进行异或运算,得到48位的序列。
5. S盒置换
将异或的结果按照6位一组分成8组,每组作为一个S盒的输入,得到8个4位的输出。将这些输出连接起来,得到32位的序列。
6. 置换
将S盒置换的结果按照P盒进行置换,得到32位的序列。
7. 异或
将置换的结果和左半部分C1进行异或运算,得到32位的序列。
经过16轮迭代后,得到的左右两半部分连接起来,进行最后一次置换(IP逆置换),得到密文。
第一轮之后的结果为:
左半部分C1 = 1110001 0011000 0011110
右半部分D1 = 0101010 1100100 1000010 0000110
子密钥K1 = 1100100 0001010 1111001 0110101 0001011 1110001 0101010 1001100
相关推荐
![](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)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)