如下图所示,Twofish算法过程包括十六回合Feistel操作,以及whitening操作的额外输入/输出部分。
![对TWofish算法流程进行了分析。](imgs/2021/03/333-1.png)
Twofish算法与DES的加密和解密算法基本不一样,汤四。Twofish算法的加密和解密算法略微不一样,但应用的基础组件是一样的。以加密为例,先将128长的明文分成四个32长的字组(P0、P1、P2、P3),并分别与长度为32位的四子密钥K0~K3做XOR运算,获得R0、0-R0、3等四组結果,这就是输入Wofining步骤。
R0,1=P1相寓K1=0,...,3。
然后进行16个回合的加密动作。先算Tr,0和Tr,1。
Rr,0=g(Rr,0)
R,1=g(ROL(Rr,1,8)),
r=0,1,…15。
在这里,R代表了当前的回合数。然后通过PHT将Tr,0和Tr,1通过PHT,然后分别添加子密钥K2R+8和K2R+9,获得Fr,0和Fr,1:
mod232(Tr,0+Tr,1+K2+8)Fr,o二。
mod232,Fr,1=(Tr,0+2Tr,1+K2r+9)。
然后,Fr、0、Fr、1、R、2和XOR运算(R、3焦1),最后将R、2向右移动一位。这样,我们就可以得到下一轮的输入数据。
在最后一轮之后,输出whitening操作,以及XOR操作,~K7进行XOR操作的4组32位数据,如下:
C1=R16,(1+2)mod4:mod4:K1+4i=0。
ROR和ROL分别代表向右和向左移动的运算。代表16个字节的输出密文(C0、C1、C2、C3)。
解密的算法与加密的算法相似。它们使用相同的16个回合动作,并且使用相同的F函数。但是,在解密过程中,所有子钥匙的使用顺序与加密过程相反,每个回合的动作略有变化。 Twofish算法广泛应用于数据加密和网络安全通信,具有良好的快速加密解密能力和优异的保密性和耐受性。在实际应用系统中,通常与其他加密技术一起形成完整的加密系统。