DES加密算法详解

DES(Data Encryption Standard)是目前最为流行的加密算法之一。DES是对称的,也就是说它使用同一个密钥来加密和解密数据。DES仍是一种分组加密算法,该算法每次处理固定长度的数据段,称之为分组。DES分组的大小是64位,若是加密的数据长度不是64位的倍数,能够按照某种具体的规则来填充位。从本质上来讲,DES的安全性依赖于虚假表象,从密码学的术语来说就是依赖于“混乱和扩散”的原则。混乱的目的是为隐藏任何明文同密文、或者密钥之间的关系,而扩散的目的是使明文中的有效位和密钥一块儿组成尽量多的密文。二者结合到一块儿就使得安全性变得相对较高。DES算法具体经过对明文进行一系列的排列和替换操做来将其加密。过程的关键就是从给定的初始密钥中获得16个子密钥的函数。要加密一组明文,每一个子密钥按照顺序(1-16)以一系列的位操做施加于数据上,每一个子密钥一次,一共重复16次。每一次迭代称之为一轮。要对密文进行解密能够采用一样的步骤,只是子密钥是按照逆向的顺序(16-1)对密文进行处理。实现DES算法,主要采用C语言进行实现,C语言是一个很古老的语言,但至今在程序中,频繁被使用,有它本身的优点。算法

算法总体流程

DES算法过程,总体可分红三个模块,这三个模块,并非相互独立,而是相互杂糅在一块儿。可是密钥的生成并不须要外在条件,所以首先实现16个字密钥的生成。在对明文加密过程当中,有一个16轮迭代加密,而每论迭代加密都须要通过几个相同的函数使得明文与密文相结合,以及明文的发散混淆处理。因此把相同处理函数抽取出啦,造成一个新的模块f。总体流程如图  图2-1所示。安全

算法描述

1.输入64位明文数据,并进行初始置换IP。函数

2.在初始置换IP后,明文数据再被分为左右两部分,每部分32位,以L0,R0表示。加密

3.在秘钥的控制下,通过16轮运算(f)。.net

4.16轮后,左、右两部分交换,并链接再一块儿,再进行逆置换。blog

5.输出64位密文。get

若是想要详细了解:博客

参考博客io

里面介绍的很详细,也很全面,对各个模块算法有详细的讲解。class