分组密码DES

分组密码的原理

DES是分组密码,分组密码将消息进行等长分组,使用同一密钥对每个分组进行加密。

DES算法

  • DES是一个迭代分组密码,使用64位长的密钥加密64位长的明文,获得64位长的密文,使用轮函数是Feistel,迭代16轮。
  • 加密流程:明文(64位)->初始置换ip->16轮Feistel->逆初始置换ip->密文(64位)

流程

1.给定一个明文m,首先通过一个固定的初始置换ip得到m0,然后将m0分为左右两部分,即m0=L0+R0,分别为m0的左右两部分,均为32位。ip置换的作用是使打乱原来的顺序。

初始ip置换表:

58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,
57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,
61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,

2.使用密钥对R0和L0进行16轮迭代运算,运算规则:

 

16246589-9c98b29d9f4c3411.jpg

adaf2edda3cc7cd9ca7533aa3901213fb80e916c.jpg

3.DES的核心是非线性函数f,函数的输入有两个变量,一个是32bit的Ri-1,另一个是48bit的ki-1,输出的结果为32bit。

 

4.首先利用扩展置换E,将Ri-1扩展成一个48bit的串,然后将扩展后的结果和ki进行异或运算,将所得到得结果48bit分成8个6bit的串

16246589-b30220c472b9a433.jpg

IMG_20190510_154656.jpg

5.将上步得到的8个6bit的串,分别作为S盒的输入,每个S盒都将6bit的消息映射成一个4bit的消息,X1X6转换成十进制,对应表中的行号,X2X3X4X5转换成十进制,对应于表中的列号,通过对比S盒返回一个数字,将数字转换为四个二进制表示的数。

16246589-d8fb5d9e20639e40.jpg

IMG_20190510_154714.jpg

6.运行完8个S盒后,返回32bit的串,再将这32bit使用P置换,即可得到f函数的输出。
7.最后一轮迭代,左右两个32bit并不叫唤,再对R16L16进行ip逆置换,即可得到密文c。

 

16246589-4d437c36c1897db7.jpg

IMG_20190510_154726.jpg

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值