学习笔记:DES加密算法学习

DES是一种分组加密算法,其每个明文分组的长度分为64位,密钥长度为56位,输出的密文长度为64位。(密钥其实是共有64位,其中有8位是奇偶校验位)

DES的大致步骤是:

1、对输入的64位明文进行初始置换IP

2、在密钥控制下进行16轮迭代(Feistel)

3、交换明文左右32比特

4、初始逆置换IP^{-1}

输出64比特的密文数据

其中16轮次迭代使用的子密钥的产生流程为:

1.输入64位的密钥;2.对密钥进行密钥置换 1得到56位的输出;3.将所得输出分为28位的两等份,分别对两个分组进行循环左移;4.将第三部所获得的两个分组组合即为下一轮次的密钥输入,再对这这两个分组进行压缩置换所得的48位输出就作为当前循环轮次的子密钥。

如此循环16次

具体流程:

1、首先对输入的64位明文进行初始置换IP:置换表为

 其含义是,按照置换表中的数值表示的位置的数值放在指定位置,比如第一个数是58,意为把58位的数放在第一位。

2、在密钥控制下进行16轮迭代(Feistel)

迭代采用的是Feistel加密算法,将64位的输入分为32位的两等份,其中

LE_{i}=RE_{i-1}

RE_{i}=LE_{i-1}\bigoplus F\left \{ RE_{i-1},K_{i} \right \}

对应的轮函数处理是:

   1.首先对RE部分进行扩展置换(或E盒置换),使得其被扩展成48位,E盒置换的置换表为

   2.再将所得的对应48位子密钥和扩展置换所得的48位输出进行异或。

   3.将两者异或所得的输出进行S-盒代替,S-盒代替原理:
通过S-盒代替将48位的输入变回了32位的输出,其实际使用就是将48位按6*8分为了8个组,用4位去替代6位,得到4*8=32的输出。对这输入的八个组分别用S盒1~8进行代替。【注意:整个过程中只有S-盒是代替其他的都是置换。】

   4.最后再对得到的32位输出进行P-盒置换

 3、再将第16轮次互换完的数据左右进行互换,也就相当于Feistel加密运行到第16轮后不进行左右互换。

4、对所得输出进行一个初始逆置换即得到所求的密文IP^{-1}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榴莲 蛋挞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值