文章横幅PC版
文章横幅iPad版
文章横幅手机版

des算法详解

TIME:2019-03-01 16:28  click: 137 次 来源: 未知

des是对称分组加密算法。用密钥对明文先代替后置换,这就是DES的一轮。des共有16轮,即在明文上操作16次一样的技术组合。

首先,算法对64位明文分组实施操作。通过一个初始置换后,明文按高低位被平均划成左右两部分,两部分均32位。然后实施16轮相同的操作,每轮的操作叫做函数f。该函数把数据和每轮的子密钥结合。16轮后,左右两部分合起来,再由一个末置换,算法结束。

初始置换

初始置换在第1轮运行前,针对输入分组进行变换。

密钥置换

64位密钥按顺序分为8组,每组第8位只用做奇偶校验来保证密钥不出现错误,在加解密期间可忽略,所以密钥的有效长度仅56位。56位密钥被分为两部分,两部分均为28位。移动之后,再在56位中选取48位。这个操作不仅置换了每一位的顺序,还从中选出了子密钥,所以叫做压缩置换。通过这种位移,每个子密钥都成为原始密钥的彼此不同的子集。每一个密钥的比特位大约会出现在14个子密钥中。

扩展置换

把数据的右半部分从32位扩展至48位,此操作通过把一位扩展成两位,让输出对输入的依靠快速扩展,称为雪崩效应。这一操作体现了des的设计思想,即尽力让密文的每位快速地与明文和密钥的每位构建关系。

对于每个4位输入的分组,第1位和第4位会复制一次,对应输出分组中的两位,第2、3位仅对应该分组中的一位。虽然输出分组大于输入分组,但每个输入分组只能生成唯一的输出分组。

S盒置换

压缩了的密钥和扩展了的数据异或完成,将实施替代。替代操作由8个S盒完成,将48位的输入分成8个6位的组,每个S盒有6位输入与4位输出。S盒置换是des算法的关键步骤,它的非线性向des给出了核心安全保障。

S盒距子密钥较近,且S盒中的数据含了子密钥数据的信息,与密钥关联较大,且需8个置换S盒,运算时间较长,耗费硬件资源较多,因此,S盒常是密码分析与侧信道分析的重点。

P盒置换

S盒的32位输出再进行置换。此置换将每个输入位映射进输出位,任何位不被复制与剔除。

最后,将P盒置换的输出和起初的64位分组的左半部分异或,其结果和原来的右半部分交换,再操作下一轮。

末置换

末置换是初始置换相反的过程。des最后一轮完成时,左、右部分并没有交换,而是把两部分合在一起为一个分组做末置换的输入。

des的解密

des使用相同函数加、解密每个分组变成可能,二者只有一个不一样的地方则为子密钥的运用次序相反。另外,产生每轮子密钥的算法也循环。

上一篇:分组密码和流密码的区别是什么 下一篇:des算法攻击