DES简介
DES(Data Encryption Standard)是一种对称加密算法。DES是一种分组加密算法,分组长度是64位(即8字节),密钥长度为64位(8字节),每8位包含一个校验位,用于奇偶校验,所以只有56位参与运算。
加密流程
DES的加密流程可以分为3个步骤。
初始置换(IP)
64位明文通过固定置换表(IP表)重新排列。
初始置换表
原来位于第58个位置的数据放在第1个位置,原来位于第50个位置的数据放在第2个位置,第42个放在第3个,以此类推。
16轮Feistel迭代
将经过初始置换的64位数据被分成两部分,分为左32位(L₀)和右32位(R₀)。
后面每一轮都会输出新的左部分和右部分,记为 Ln和 Rn,其中n 是轮次编号(从0到15)。
E扩展置换
将32位的 Rn 通过一个固定的扩展置换表变成48位的数据。
扩展置换表
经过这样一个表将原来32位的数据扩展为48位的数据。
与子密钥异或(XOR)
扩展后的48位数据与当前轮子密钥Kₙ按位异或,子密钥的长度是48位,异或后的数据长度也是48位。(后面会讲子密钥生成过程)。
S盒替换
将异或后的48位数据分为8块,每块数据长度为6位,在DES中有8个S盒,在每个S盒中,将6位的输入压缩为4位的输出,然后得到32位的输出。
P盒置换
S盒得到的32位输出通过固定置换表(P盒)进一步混淆,重新排列。
P盒置换表
这样一次轮函数就结束了
逆初始置换(IP⁻¹)
经过16轮的轮函数迭代之后,将L15和R15拼接成64位的数据,经过逆初始置换表置换之后,生成最终的64位密文。
逆IP置换表
密钥调度(生成子密钥)
主密钥长度为64位,除去8位校验位(第8,16,24,32,40,48,56,64位),剩余56位参与运算。
PC-1置换
将64位密钥(剔除校验位后为56位)按照预定的PC-1置换表重新排列,并分为左右两部分(各28位)。
PC-1置换表
循环左移
对左右各28位数据进行循环左移。根据轮数不同,每一轮移位的位数(1位或2位)也有所不同,目的是使得子密钥具有足够的扩散性。
每次循环左移是基于上一次生成的中间密钥部分进行移位。
PC-2置换
将移位后的56位密钥合并后,通过PC-2置换表选择48位作为当前轮的子密钥,生成16轮子密钥。
PC-2置换表
3DES简介
3DES(Triple DES),即三重DES加密算法,3DES是为了增加DES的强度,将DES重复3次所得到的一种密码算法,也称为TDEA。
加密模式
3DES通过三次DES操作实现加密,支持两种主要模式:
- EDE模式(加密-解密-加密):最常用,支持密钥灵活性。
- EEE模式(加密-加密-加密):较少使用,安全性类似但需更多计算。
EDE模式
3DES最常用的模式是EDE模式(Encrypt-Decrypt-Encrypt)。
加密流程
其基本思路是:
第一步:使用密钥K₁对明文进行DES加密。
第二步:使用密钥K₂对中间结果进行DES解密。
第三步:使用密钥K₃对结果再次加密,生成最终密文。
公式表示:
解密流程
解密是加密的逆过程,顺序为: