基本定义
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。参见https://csrc.nist.gov/pubs/fips/46-3/final
加密过程
一开始输入64位的明文数据;
然后进行初始置换(IP);
初始置换之后,将生成的64位数据分为左右两部分,每部分为32位,命名为L0(Left0)、R0(Right0);
然后这两部分在密钥k的参与下,根据函数f进行16轮完全相同的运算,我们称为16轮迭代运算,每运算一次,左右两部分的命名就改变一次,比如第一轮运算后,L0、R0就变为L1、R1,直到16论运算完成,L0变为L16,R0变为R16;
在16轮运算完成之后,将L16和R16交换,并且合并为64位;再经过末置换(初始置换的逆置换/终止置换),输出密文。
初始置换
根据下表进行:
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
置换规则是以输入的第 58 位作为其第一位,第 50 位作为其第二位,依此类推,以第 7 位作为最后一位。
同时有其逆变换
40 8 48 16 56 24 64 3
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25