DES加解密算法实现详解

一:实验原理:

1,将64位明文进行初始置换,置换规则是:把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长3 2位,其置换规则为将输入的第58位换到第一位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0=D58D50……D8;R0=D57D49……D7,置换表如下:



2,密钥产生

   将输入的64位密钥各位分别标记为1到64,忽略每行的第八位(因为每个第8 位都用作奇偶校验),具体过程参照置换选择1

  

(置换选择1)

   将所得的56位密钥分为2个28位数据 和 ,然后在每轮迭代中, 和

分别循环左移(或旋转)一位或两位,具体左移位数参见下表


移位后的值作为下一轮的输入,也是置换选择2的输入,经过置换选择2后的输出是一个48位的数,置换选择2表如下:


3,将初始置换后的左右各32位数据进行16次迭代,每次的迭代公式为:

Li=Ri-1;

Ri=Li-1⊕F(Ri-1,ki)

其中Ki是指轮密钥,就是由步骤2产生的48位的密钥, 是32位,但是 是48位,所以要先将 扩展成48位,扩展置换表如下所示:



  将扩展后的 和 进行异或,得到的结果是48位的,然后通过F函数将其变成32位,具体过程是通过八个S盒,每个S盒都输入6位,输出4位,八个S盒的定义如下图:





利用F函数得到的结果是32位的,再最终和Li-1异或就得到了Ri,如此迭代16次,

4,将迭代16次的结果进行逆初始置换后得到密文,逆初始置换表如下所示:


5,DES密码的解密算法与加密算法是相同的,只是子密钥的使用次序相反。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值