已知明文 m=computer ,密钥k=program,采用DES算法,求出第一轮运算之后左半部L1和右半部R1。

DES的加密过程

1 )明文初始置换

 

2 )密钥初始置换
密钥置换1表
密钥置换2表

 循环左移位数表

表示第1轮,只要C和D各需左移1位,

第2轮,C和D各需左移1位,

第3轮,C和D各需左移2位,

第4轮,C和D各需左移2位,

......

第16轮,C和D各需左移1位。

3 )生成 16 48 位的子密钥

 

4 )明文扩展置换

 

5) S 盒替代

 

6) P 盒置换
 

 

7 )末置换

 

8) DES 的解密
例:已知明文 m =computer ,密钥 k =program ,采用 DES 算法,求出第一轮运
算之后左半部 L1 和右半部 R1
过程:

 

 

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,将明文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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值