Feistel建议使用乘积密码的概念来逼近理想分组密码,他建议密码交替地使用代替和置换。
使用Feistel密码结构,明文分组被分为等长的LE,RE两部分,对这两部分数据进行n次轮换迭代后组合成密文。每一轮得到的输出就是下一轮的输入。
加密方法是:
第一轮次:
……
第n轮次:
最终得到输出密文为:
其中Ki是每一轮次的子密钥,是由整个密钥K推导出的;轮函数F是w位长的右半分组和y位长的子密钥的函数,其输出结果是一个w位长的值。
解密算法:
Feistel的解密算法其实就是对其加密算法的逆推导
Feistel加密算法得到的结果输出其实是,则新的密文为,
从第一轮迭代开始算,即
……
直到第n轮次:
最终结果将左右两个分组置换,得到输出即为原明文
从Feistel的加密和解密可以看出,他的加密和解密过程除了每一轮次所用的子密钥不同外,其他过程都是相同的,这两个过程所使用的子密钥顺序是相反的