一.SDES加密算法
SDES的算法如上图所示,作者将其分为三个部分讲解:
1.子密钥的产生1.1 对于输入的10位密钥K=(k1,k2,k3,k4,k5,k6,k7,k8,k9,k10),做P10置换,得到结果为K1=(k3,k5,k2,k7,k4,k10,k1,k9,k8,k6)。
1.2 将上一步中的K1分成LK1和RK1分别对应K1的高低5位,并将LK1和RK1做循环左移1位的操作,例:(10010)循环左移1位变为(00101)。
1.3 合并LK1和RK1得到10位的K2(高5位为LK1,低5位为RK1),对K2=(K1,k2,k3,k4,k5,k6,k7,k8,k9,k10)做P8置换,得到子密钥SubKey1=(k6,k3,k7,k4,k8,k5,k10,k9)。
1.4 将上一步中的K2分成LK2和RK2分别对应K2的高低5位,并将LK2和RK2做循环左移2位的操作,例:(10010)循环左移2位变为(01010)。
1.5 合并LK2和RK2得到10位的K3(高5位为LK2,低5位为RK2),对K3=(k1,k2,k3,k4,k5,k6,k7,k8,k9,k10)做P8置换,得到子密钥SubKey2=(k6,k3,k7,k4,k8,k5,k10,k9)。
2.加密部分
2.1 对于输入的8位明文P=(p1,p2,p3,4,p5,p6,p7,p8),首先做一次IP置换得到P1=(k2,k6,k3,k1,k4,k8,k5,k7),IP置换相当于对P进行矩阵的乘法,对应矩阵为:
IP的逆变换IPI可以同样可以看成是矩阵的乘法,对应的矩阵为:
2.2 得到P1以后开始,进入Fk函数进行处理