信息安全3——DES加密算法原理以及3DES

①算法简介

DES(Data-Encryption-Standard)又称为美国数据加密标准。是一种对称加密算法(对称加密就是加密和解密用的是同一个密钥),属于采用密钥加密的块算法。DES算法要将明文和密钥分开进行处理,首先是对明文的处理,明文按64位进行分组,分组后的明文块和密钥通过DES加密后形成一个密文块,所有的密文块拼到一起输出就是密文。DES的密钥长64位,但实际上只有54位密钥参与了DES运算(其中的第8/16/24/32/40/48/56/64位是校验位)。由于DES是对称加密,就要求发送方和接收方使用相同的密钥进行加密和解密,所以在传输数据之前双方得约定好密钥。

②算法原理

DES算法的原理流程图如图2.1所示

图 2.1

③流程详解

(1)初始置换

就是将原来的明文的64位二进制数调整顺序重新排列,初始置换表如图3.1所示,置换规则需按照置换表,输出的第一位的数据是输入的第五十八位上的数据,输出的第二位数据是输入的第50位的数据,依此类推,初始置换示例如图3.1所示

图 3.1 

(2)Round区域

a. EP(拓展置换)

输入的32位二进制数分为八组通过拓展置换之后变为48位二进制数,拓展置换是指将每组的第一位数减一的结果作为新的第一位,最后一位数加一的结果作为新的最后一位,这样每组由原来的四位二进制数变成了六位二进制数,经过拓展置换之后形成了一个48位二进制数。如图3.2是一个拓展置换的示例

 图 3.2

b. 异或运算

第一次异或运算是由经处理之后的部分明文(也就是经过上一步的拓展之后的48位明文)与秘钥进行异或运算(相同为0,不同为1)

c.S盒压缩置换

经过异或运算之后的结果分为八组(每组六位)输入到S盒中,每一组对应一个S盒,每一组的数字由第一位和最后一位组成一个二进制数转换为十进制之后作为行号,中间的四位组成一个二进制数转换为十进制之后作为列号,经过俩组数字得到的行列对应S盒中相应位置的压缩数元素,把这个数转化为二进制之后就得到了一个压缩后的四位二进制数(共有八组,每组四位),如图3.3所示是八个S盒里的数据

  

 图 3.3

 d. P盒置换

经S盒压缩之后的数据要进行P盒置换如图3.4所示是P盒置换的顺序,置换规则同初始置换一样,给出的位置是置换前的数据在置换后的位置

 图 3.4

经过P盒置换之后的数据要再经过一次和另一部分明文进行异或运算后一个完整的Round才执行完,最后进行输出。第一个Round的输出结果作为第二个Round的输入结果,依此类推,最后一个Round的输出结果要经过终止置换后才能得到密文

(3)终止置换

终止置换是初始置换的逆运算,也就是说一个二进制数经过初始置换后再进行终止置换,结果还是它本身,终止置换的表如图3.5所示

图 3.5 

(3)密钥处理

密钥的处理要经过三步分别是置换处理、循环左移、压缩置换,一个64位的密钥经过处理之后成为一个48位的密钥

a. 置换处理

同明文的初始置换、终止置换一样,也需要置换表进行,一个64位二进制数经过置换处理之后变为了56位二进制数,置换表如图3.6所示(其中没有第8、16、24、32、40、48、56、64位,他们作为校验位),将得到的56位二进制数分为两部分28位的二进制数,然后对这两部分分开进行循环左移处理

图 3.6

 b.循环左移

将两个28位二进制数循环左移,然后对左移之后的结果进行合并。循环左移的位数由轮次(Round)决定(除了第1、2、9、16轮是循环左移一位,其余轮次都是循环左移两位)

c. 压缩置换

循环左移之后再进行压缩置换,压缩表如图3.7所示,在压缩至换中既缩短了数据位数,又改变了数据顺序。

图 3.7

以上就是对密钥的处理的三个步骤,在每一轮次结束之后,将密钥用于Round中的明文处理,结束后依次对密钥再次进行以上三个步骤的处理用于第二个Round中的明文处理 

以上就是DES算法中加密的全部流程。对于解密是执行和加密一样的步骤,不同的是要倒置密钥的使用顺序,即第16个密钥用于第1Round中,依次类推。

由于DES算法思想是开源的,通过DES加密的密文其安全性完全取决于密钥,如果对其进行暴力破解还是很容易破解出来的,因此在DES之上进行改进,增加其加密操作,也就是对一个明文使用不同的三个密钥对其依次进行DES加密、DES解密、DES加密得到的密文安全性较原始的DES高一些,这个加密过程称之为3DES加密算法,其加密流程图如图4.1所示,对于3DES算法,它的加密时间要比DES多一点

图 4.1 

tips:本篇文章中的秘钥默认为密钥,因为绘图比较麻烦,后面懒的改了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值