Feistel密码结构

简介很多的分组密码结构本质上基于Feiste网络结构。

      简单地说Feistel结构就是顺序地执行两个或多个基本密码系统,使最后结果的密码强度高于每个密码系统的结果

Feistel加密结构:

        假设加密过程的输入为分组长2w的明文和一个密钥K(K在运算过程中将分成多个子密钥Ki),将明文分为两部分,左边记为L0,右边记为R0.以下是加密过程图:

                 第一轮:R0与子密钥k0进行运算,记为F(R0,k0),得到的结果与L0进行异或运算。

                最终得到的结果将作为第二轮运算的右半部分记为R1,而R0直接作为第二轮的左半部分记为L1

        第二轮:L1和F(R1,K1)(R1和K1运算的结果)进行异或运算,产生的结果为第三轮的R2,R1直接变为L2

        第三轮以后一次类推,n轮迭代之后,左右两边再合并到一起为最后的密文分组

        每轮的置换可以由以下函数表示:

                               Li = Ri-1

                                                Ri = Li-1F(Ri-1,Ki)

 

       与Feistel有关的参数:

            1、分组大小。分组越多安全性越高,加密速度越慢,分组密码中普遍使用的分组大小为64bit。

            2、密钥大小。密钥越长安全性越高,加密速度越慢,一般使用128bit的密钥或者更长。

            3、轮数。轮数越多安全性越高,一般为16轮。

            4、子密钥产生算法。该算法越复杂安全性越高。

            5、轮函数。轮函数越复杂安全性越高。

Feistel解密结构:

        本质上与加密过程一样,就是把加密过程反过来。