DES算法原理

1977年,DES成为一个标准,以后每五年进行一次再验证,这通常在12月份进行。所有的美国联邦机构和其他处理信息的组织为了各自的利益都必须使用DES(用于非机密文档)。在非政府公司中,DES也得到了广泛的使用。这个算法基于IBM的LUCIFER系统,该系统使用128位的密钥。通常,密钥越长,系统越安全。DES使用64位密钥;但是其中8位用于错误检测,因此实际上从安全性角度看DES是个56位的密钥系统。由于该加密系统以64位的二进制数据为一组进行加密,因此它也被称为分组密码。DES的安全性取决于密钥的保密,而不是算法的保密。通过密钥的长度可以进一步增强安全性,因为存在着7亿亿(70,000,000,000,000,000)种可能的密钥;因此推断密钥的可能性很小,足以保护大部分分布式环境。当然,随着普通PC的能力持续提高,连续搜索密钥和破译代码的能力也成比例的提高。该加密算法有三个阶段,在图1中进行了描述。解密是通过逆序执行这三个阶段来实现的,包括逆序使用阶段2中所提到的密钥分组(从K16到K1)。

DES加密算法原理

      DES使用一个56位的密钥以及附加的8位奇偶校验位,产生最大64位的分组大小。这是一个迭代的分组密码,使用称为Feistel的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES使用16个循环,使用异或,置换,代换,移位操作四种基本运算。

DES密钥


DES的各个阶段

      DES每个阶段使用的是不同的子密钥和上一阶段的输出,但执行的操作相同。这些定义在三种“盒(box)”,分别成为扩充盒(expansion box,E盒),替换盒(substitution    box,S盒)和置换盒(permutation box,P盒)在DES的每个阶段中,这三个盒的应用顺序如图1.2。




E盒的作用

      E盒的真正作用是确保最终的密文与所有的明文位都有关,下面举例来看第一位通过E盒操作的情况。

       初始        1000_0000_0000_0000_0000_0000_0000_0000

      第1阶段        0100_0000_0000_0000_0000_0000_0000_0001

      第2阶段        1010_0000_0000_0000_0000_0000_0000_0010

      第3阶段        0101_0000_0000_0000_0000_0000_0000_0101

      第4阶段        1010_1000_0000_0000_0000_0000_0000_1010

      第5阶段        0101_0100_0000_0000_0000_0000_0001_0101

      第6阶段        1010_1111_0100_0000_0000_0010_1010_1010

      第7阶段        0101_0101_1110_0010_0101_0101_0101_0101

      第8阶段        1010_1010_1011_1111_1010_1110_1010_1010


S盒的作用

      将E盒的输出与48位的子密钥进行XOR运算得到的新的48位的块作为S盒的输入。S盒是DES强大功能的源泉,这8个盒定义了8种替换模式,每个盒定义了6位的输入,输出一个4位的输出。一个S盒有16列和4行,它的每个元素是一个4位的块,通常用十进制表示。例如:输入011101,S盒的行号为1,列号为14.

      S盒有两个特征:非线性与一位影响多位。非线性意味着给定一个输入-输出的组合,很难预计所有S盒的输出。一位改变将影响多位输出,是一个很有用的特征,输入微小的改变,在输出中将产生更大的改变。



猜你喜欢

转载自blog.csdn.net/qq_32539403/article/details/70673825