DES算法
DES算法分组为64比特,使用56比特密钥对64比特明文进行16轮加密,得到64比特密文。
密钥64比特,使用56比特加密,另8比特做奇偶校验。
DES 使用对合运算,即f = f-1,1为上标
DES加密
异或运算:⊕
加密过程:
1、子密钥生成,64位子密钥经过子密钥算法产生16个子密钥k1...k16,分别在1-16次加密迭代中使用
2、初始置换IP,64位明文经过置换IP表,被打乱重新排列
3、初始置换结果分为两组,L0(32位) ,R0(32位)
4、第一次迭代加密:使用加密函数f和子密钥k1,对R0进行加密,然后与L0进行模2运算(异或运算),记为L0⊕f(R0,k1),结果成为第二次运算的R1,R0成为第二次迭代的L1
5、第2-16次迭代,分别使用子密钥K2-K16,加密结果与第一次加密迭代相同
子密钥产生:
64位密钥经过置换选择1,循环左移,置换选择2,产生16个长为48位的子密钥k
1-k16。
加密函数:
加密函数f(Ri-1,ki),是DES算法的核心算法,函数包含选择运算E,异或运算,代替函数组S(S盒变换),置换运算P。
1),选择运算E与异或运算
选择运算E把Ri-1的32位扩展到48位,并与48位Ki子密钥进行异或运算。
2),S盒变换
一种压缩替换,通过S盒将48位输入变成32位输出。共有8个S盒,并行运算。
3),置换运算P
将S盒输出的32位再进行一次置换。