对称加密中的Feistel结构及主流算法解析
1. Feistel函数概述
Feistel函数是众多分组密码的核心,也被称为Feistel网络或Feistel密码,以其发明者、德裔物理学家和密码学家Horst Feistel命名。Horst Feistel不仅对DES算法有重要贡献,还发明了Lucifer密码(DES的前身),并且曾在美国空军从事敌我识别(IFF)设备的工作。他拥有麻省理工学院的学士学位和哈佛大学的硕士学位,两个学位均为物理学专业。
2. Feistel函数的工作原理
- 数据分割 :将明文数据块分割为两部分,传统上称为L0和R0。不同算法的明文块大小不同,常见的有64位和128位。例如,使用64位块时,L0和R0各为32位,数字0表示这是初始轮。
- 轮函数应用 :对其中一半数据应用轮函数F。轮函数是Feistel密码每次迭代执行的函数,其具体细节因实现而异,通常是相对简单的函数,以提高算法速度。在轮函数的某个阶段,会将轮密钥与输入到轮函数的文本块进行异或(XOR)操作,这通常是轮函数的第一步。
- 异或与换位 :将轮函数F的输出与另一半数据进行异或操作,然后交换两部分的位置。例如,将L0通过轮函数F,结果与R0异或,然后L0移到右侧,R0移到左侧。
以下是Feistel函数一轮操作的mermaid流程图:
graph TD;
A[明文块] --> B[分割为L0和R
超级会员免费看
订阅专栏 解锁全文
2141

被折叠的 条评论
为什么被折叠?



