DES:Data Encryption Standard

DES即是数据加密标准。DES设计的目的是用于加密静态存储和传输信道中的数据,安全使用10-15年(留下疑问:为什么密码算法会有年限设置?)

DES的特点:

(1)DES是分组密码,综合使用了置换,代替,代数等多种密码技术,设计充分体现了商农所阐述的设计密码的思想。
(2)明文、密文、密钥的分组长度都是64位
(3)DES是对合运算,加密和解密共用同一算法
在数学中,对合函数是指函数 f(x) 满足 f(f(x))=x。
(4)面向二进制,能够加解密任何形式的计算机数据。
(5)密码结构属于Feistel结构。Feistel结构是什么?

DES的加密过程

分组的意思,以64位为一组:输入64位一组的明文,输出64位一组的密文。
分组密码就是一次加解密都是以组为单位。
DES的密钥虽然为64位,但有8位作为奇偶校验位,故密钥实为56位。

对明文的处理:

输入64位明文,
初始置换IP(Initial Permutation):将数据打乱并重新排列,分为左右两部分,左边32位作为L0,右边32位位R0。
有初始置换矩阵。

对密钥的处理:

三个流程:置换选择1,循环左移,置换选择2
输入64位密钥,得到16个48位长的子密钥
置换选择1:
64位密钥首先进行置换选择1,其作用一是从64位密钥中取出8个奇偶校验位;
(64位的密钥每个字节的最高位是奇偶校验位。)
二是把其余56位密钥位打乱重排,前28位为C0,后28位为D0。
同样都有置换矩阵。
Ci Di循环左移和置换选择迭代16次
循环左移:
C0 D0循环左移,有相应的循环左移位数,有的为1,有的为2.为什么?
循环左移位数表:
置换选择2:
Ci Di合并成一个56位的中间数据,置换选择就是从中选出一个48位的子密钥Ki。
同样有置换选择矩阵。

密钥与明文的操作

前面已经讲了对明文和密钥的处理
下面说明分析明文与密钥是如何进行加密的:
加密函数:
R1=L0和f(R0,K1)异或得到。
每次R传给下一个迭代的L
如此重复16次,最后你初始置换IP-1
输出64位密文

加密函数f

32位输入 选择运算E 48位中间结果和48位子密钥Ki模2相加
S盒6进4出 输出f作用后的结果

代码设计

函数
为什么会用到0xff?

名词解释

  1. 分组密码(block cipher)的数学模型是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。
  2. 对称加密是加密和解密共用一个密钥的意思,DES加密解密运用同一算法,不过子密钥使用的顺序不同。